什么是ANR,如何避免它

2018-03-01 11:14:26来源:oschina作者:晨的暖阳人点击

分享

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来实现。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台