android ANR分析

1.ANR排错一般有三中种类型

    1)KeyDispatchTimeout(5s) 主要是类型案件或触摸事件在特定时间内无响应

    2)BroadcastTimeout(10s) BroadcastReceiver在特定时间内无法处理完成

    3)ServiceTimeout(20s) 小概率事件Service在特定时间内无法处理完成


2.哪些操作会导致ANR

    在主线程中执行以下操作:

    1)高好使操作,如图像变换

    2)磁盘读写,数据库读写操作

    3)大量的窗体对象


3.如何避免

    1)UI线程尽量只做跟UI相关的工作

    2)耗时操作(比如数据库,IO,链接网络或者别的有可能阻塞UI线程的操作)把它放在单独的线程中处理

    3)尽量用Handler来处理UIThread和别的线程之间的交换


4.解决逻辑

    1)使用AsyncTask,在doInBackground方法中做耗时操作,在postExecute执行更新UI操作

    2)使用Handler实现异步任务,在子线程中执行耗时操作,处理完后通过message传递处理结果

          在handler的HandleMessage方法中更新UI,或者使用Handler.post方法将消息放到Looper中


5.如何排查

    1)首先分析log

    2)从trace.txt文件中查看调用stack,adb pull data/anr/trace.txt ./mytraces.txt    

    3)看代码

    4)仔细查看ANR的成因


6.监测ANR的Watchdog

    LeakCanary


FC(Force Close)

1.什么时候出现

    1)ERROR

    2)OOM内存溢出

    3)StackOverFlowError

    4)RuntimeError 比如空指针

2.解决办法

    1)主要内存的使用和管理

    2)使用Thread.UncaughtExceptionHandler接口捕获崩溃


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值