ANR定位和修正

定位:

结合logcat和生成在手机内部的/data/anr/traces.txt文件进行分析

修正:

  1. 运行在主线程的任何方法都要尽量少做事情,特别是Activity生命周期中关键的方法(onCreate onResume里面尽可能少去创建操作;可以采用重新开启子线程的方式,然后使用Handler+Message的方式做一些操作,比如更新主线程中的ui等)

  2. 避免BroadcastReceiver里面做耗时的操作或计算,也不能在receiver中起线程做这些任务,因为receiver的生命周期很短,10s。可以在receiver中通过Intent启动一个Service去执行耗时操作。

  3. 避免在Intent Receiver里启动一个Activity,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。如果你的应用程序在响应Intent广 播时需要向用户展示什么,你应该使用Notification Manager来实现