- 什么ANR
- 造成ANR的原因
- 哪些操作是在主线程
- 怎么解决
1.什么ANR
主线程执行了耗时操作,造成无响应的弹框的出现
2.造成ANR的原因
线程被IO操作阻塞(4.0以后网络IO不能再主线程执行)
主线程存在耗时操作
3.哪些操作是在主线程
- activity所有生命周期都执行在主线程
- Service默认是执行在主线程
- 广播的Onreceve回调也是默认在主线程
- 没有使用子线程的Looper的handlerMessage,post(Runnble)
- Async的回调中除了doinbackground,其他都是执行在主线程
4.怎么解决
开启线程+handler,或者使用Asyctask