您的位置:首页 > 其它

什么是ANR,如何避免它

2018-02-28 00:00 267 查看
ANR,application not response(应用程序无响应).Android的应用程序完全运行在一个独立的线程(main)里,这就意味着,任何在主线程运行的,需要消耗大量时间的操作都会引发ANR。

一般情况下,

1. 在Activity的各个生命周期里,执行操作超过5秒无响应;

2. 在Broadcast Receiver里超过10秒;

3. 在service里超过20秒。

都会引发ANR。

如何避免?

不要再主线程里做耗时操作。如果需要耗时操作,可以开启一个子线程来运行。

Broadcast Receiver要执行耗时操作,可以启动一个service,将耗时操作交给service来执行 。因为它的生命周期比较短。如果要响应Intent广播时,如果需要向用户展示什么,可以使用Notification Manager来实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ANR