Android 进阶技术汇总三: 异步任务:AsyncTask+HandlerThread+IntentService+AsyncQueryHandler

前言:Android 异步任务&多线程 技术点概述:

ANR与异步任务:ANR为Android特有耗时报错机制,因为ANR&性能考虑,需要处理掌握 异步任务与多线程。

Thread+Runnable+主Looper handler:Thread处理异步耗时,并将结果通过消息发送给主线程Looper轮询

Thread+Runnable+结合View.post|Activity.runOnUIThread:Handler.sendMessage改用View.post|Activity.runOnUIThread

AsyncTask:基于Executor框架进行的封装,嵌入了线程池,实现异步任务和 子线程&主线程之间的通信apis

HandlerThread:集成了Looper+MessageQueue的Thread子类,处理异步轮询消息队列

IntentService:嵌入了HandlerThread的service子类,用于异步后台任务的service场景

AsyncQueryHandler:用于执行ContentProvider异步CRUD操作

TaskExecutor:自定义线程池异步任务,参照:https://github.com/caobaokang419/WeatherApp

 

6.1 ANR与异步任务


ANR是Android系统对程序无响应的异常响应,从Android系统的角度来看,发生ANR的原因主要有三个方面:

1.        Activity/Fragment在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸);

2.        BroadcastReceiver在10秒内没有执行完毕;

3.        Service的生命周期方法中有20s以上耗时。

从开发编码的角度来看,主要可能发生的场景包括:

l  耗时的网络访

你可能感兴趣的:(Android,进阶编程)