在Activity中的onCreate方法中执行死循环会造成ANR吗?
要解答这个问题首先要说下ANR产生的四个条件:
1.service:前台service的onCreate方法执行时间超过20秒,后台service的onCreate方法执行时间超过200秒会造成ANR.
2.BroadCastReceiver:前台广播的onReceive执行时间超过10秒,后台广播时间超过60秒会造成ANR.
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SHUTDOWN);
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);//该语句为设置为前台广播
context.sendBroadcast(intent);
3.ContentProvider:publish在10s内没有响应出现ANR
4.input dispating timeout:5s内没有响应键盘输入,触摸屏幕等事件出现ANR。
所以可以看到Activity的生命周期回调并不在上述四种ANR的情景里,所以在Activity的onCreate方法中执行死循环并不会造成ANR,只不过死循环卡住了主线程,如果系统再有这四种情形触发就会触发ANR.
网友评论