ANR 问题?

ANR 可以在Data/anr/traces.text 文件中。

ANR 是主线程耗时超做5s以上,或者是在发送广播是时间过长时,出现的提示框。

解决问题 可以在子线程中执行耗时超做,但是不建议在广播接收者中创建子线程。广播一般发送10s,结束。

在子线程中执行耗时超做,并且UI更新就会出现FC,就要进行,不同线程间的通讯,可以用handler

在创建UI的线程中重写

耗时超做在 new Thread

UI创建线程可以 new Handler 从写handleMessage()耗时超做的线程就可以发送消息到你要的线程。

除此还可以在主线程耗时超做不出现ANR的几个方法:

除此外还有一个异步任务

中间参数是 你在doInBackground 在耗时是发送消息的类型,

doInBackground发送消息

启动异步任务还可以自定义自己的线程池

如果没有系统的默认5个线程,等待的10个而我们可以通过

自定义消息队列

用系统的线程

自己用handlerTread

系统的intentservece