多线程的处理 handler   handlerTread Intentservice

ANR 问题?

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

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

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

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

在创建UI的线程中重写

225628388.png

耗时超做在 new Thread

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

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

230339165.png

除此外还有一个异步任务

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

231214533.png

doInBackground发送消息

231834440.png

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

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

232302510.png

232830414.png

自定义消息队列

233102178.png

用系统的线程

233704546.png

自己用handlerTread

233708802.png

系统的intentservece

233911847.png

233931964.png


你可能感兴趣的:(handler,IntentService,HandlerTread,多线程的处理)