什么是ANR,如何避免它

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

猜你喜欢

转载自my.oschina.net/5501/blog/1625773
今日推荐