草庐IT

在线“杀死” App 的卡顿难题!

ANR(ApplicationNotResponse)是安卓开发团队经常遇到的无响应问题,但却很难定位和根除。尤其是线上问题,由于难以复现,导致开发者难以有效地快速解决。为此,本⽂将为大家分享作者是如何在⼀个⽉内降低50%的ANR线上问题发⽣率的探索与实践,希望能对开发者有所帮助或启发。Google的一项内部研究表明,过高的崩溃与ANR发生率会直接影响应用的评分情况,并且很难在商店中累积起用户量,严重影响应用在商店的排名情况。这一系列的连锁反应将会给应用带来很大的损失,且有可能失去在应用商店获得谷歌推荐的资格。因此,ANR问题对于⼤多数安卓团队来说十分棘手,尤其是线上问题令人头疼。因为本地问题

Android主线程进行Thread.sleep()会导致anr吗

首先先明白一个问题:什么是anr?anr意思就是应用没有响应。以前存在很多误解就是"在主线程做了耗时操作"就会引起ANR,现在觉得不完全正确,耗时操作实际上不一定会导致没有响应,没有响应的通俗理解就是:有人(事件或操作)发出一个请求,但是主线程没有对这个人进行回馈(可能是没时间,可能是不想理,可能是没办法理你)这个就叫做没有响应。这段代码在onCreate中sleep了10秒,会出现anr吗?答案是可能会,也可能不会当主线程在sleep的时候,如果UI线程不需要进行操作,也就是说没有消息会发送给UI线程并要求UI线程进行处理的时候,那么sleep30秒就不会导致ANR,因为没有出现anr的情况

Android主线程进行Thread.sleep()会导致anr吗

首先先明白一个问题:什么是anr?anr意思就是应用没有响应。以前存在很多误解就是"在主线程做了耗时操作"就会引起ANR,现在觉得不完全正确,耗时操作实际上不一定会导致没有响应,没有响应的通俗理解就是:有人(事件或操作)发出一个请求,但是主线程没有对这个人进行回馈(可能是没时间,可能是不想理,可能是没办法理你)这个就叫做没有响应。这段代码在onCreate中sleep了10秒,会出现anr吗?答案是可能会,也可能不会当主线程在sleep的时候,如果UI线程不需要进行操作,也就是说没有消息会发送给UI线程并要求UI线程进行处理的时候,那么sleep30秒就不会导致ANR,因为没有出现anr的情况

Service 出现ANR的原因

Android知识总结一、ANR出现原因Android系统中,ActivityManagerService(简称AMS)和WindowManagerService(简称WMS)会检测App的响应时间,如果App在特定时间无法相应屏幕触摸或键盘输入时间,或者特定事件没有处理完毕,就会出现ANR。1、以下四个条件都可以造成ANR发生:InputDispatchingTimeout:5秒内无法响应屏幕触摸事件或键盘输入事件BroadcastQueueTimeout:在执行前台广播(BroadcastReceiver)的onReceive()函数时10秒没有处理完成,后台为60秒。ServiceTim

Service 出现ANR的原因

Android知识总结一、ANR出现原因Android系统中,ActivityManagerService(简称AMS)和WindowManagerService(简称WMS)会检测App的响应时间,如果App在特定时间无法相应屏幕触摸或键盘输入时间,或者特定事件没有处理完毕,就会出现ANR。1、以下四个条件都可以造成ANR发生:InputDispatchingTimeout:5秒内无法响应屏幕触摸事件或键盘输入事件BroadcastQueueTimeout:在执行前台广播(BroadcastReceiver)的onReceive()函数时10秒没有处理完成,后台为60秒。ServiceTim

一个非常难以琢磨的界面Bug(ANR)

Bug详情:描述:在频繁切换某两个功能的时候,一开始没有什么问题,大概非常快速频繁切换十几分钟(时间不确定,有时候长,有时候短)后,页面点击没有反应,偶尔会出现UI呈现错乱或者显示字符串文字显示不全。但是服务端同步数据是能收到并没有问题。最后会出现ANR。日志内容:1.App打印出的App未捕获到的抛给系统的异常日志:java.lang.IllegalStateException:Viewwithid-1:android.widget.LinearLayout#onMeasure()didnotsetthemeasureddimensionbycallingsetMeasuredDimensi

一个非常难以琢磨的界面Bug(ANR)

Bug详情:描述:在频繁切换某两个功能的时候,一开始没有什么问题,大概非常快速频繁切换十几分钟(时间不确定,有时候长,有时候短)后,页面点击没有反应,偶尔会出现UI呈现错乱或者显示字符串文字显示不全。但是服务端同步数据是能收到并没有问题。最后会出现ANR。日志内容:1.App打印出的App未捕获到的抛给系统的异常日志:java.lang.IllegalStateException:Viewwithid-1:android.widget.LinearLayout#onMeasure()didnotsetthemeasureddimensionbycallingsetMeasuredDimensi

Android Studio - 第四十六期 不会ANR的轮播写法

  最近在学习撸撸的代码,发现他的轮播写法很独特,但是有bug,就重新修改了一下,现在支持左右点击和圆点自定义。    BannerAdapter:(注意适配器自己看ImageView和onclick的自己项目的写法~)package com.example.p029_banner_lunbo.adapter;import android.app.Activity;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.example.p029_banne

Android Studio - 第四十六期 不会ANR的轮播写法

  最近在学习撸撸的代码,发现他的轮播写法很独特,但是有bug,就重新修改了一下,现在支持左右点击和圆点自定义。    BannerAdapter:(注意适配器自己看ImageView和onclick的自己项目的写法~)package com.example.p029_banner_lunbo.adapter;import android.app.Activity;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.example.p029_banne