前言: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的原因主要有三个方面:</