最近感觉基础知识不太扎实,拿起郭神的《第一行代码》开始看,并记录来下阅读的内容,以方便以后的系统性的回忆。
<li>Handler处理机制</li>
在Android系统中,主线程不能进行耗时的操作,当主线程阻塞时,系统将会抛出ANR异常。Handler处理机制主要包含MessageQueue/Message/Looper以及Handler。
如使用场景:子线程更新主线程控件信息
运行机制:子线程将线程的处理结果,通过Handler 将消息加入到MessageQueue队列中等待处理。Looper 调用loop()方法将队列中的消息依次提取并传递到handlerMessage方法中处理,最后在handleMessage方法中更新UI. 由于每个线程只有一个Looper对象和一个MessageQueue对象,同时异步线程处理又是经常需要更新主线程,个人感觉主线程中消息太多/线程数量太多,也许会影响性能。
<li>AsyncTask异步消息处理机制</li>
AsyncTask也是异步消息处理机制的另一种方法。由于之前编程经常使用AsyncTask,因此对该部分内容还是比较生疏。
AsyncTask是一个抽象类,因此如果要使用它,需要声明一个类去继承并实现它的关键方法。
在声明类时,可以为其制定三个泛型参数<A,B,C>
A: 在执行AsyncTask时,需要传入的参数
B:后台执行时,进程的执行进度值类型
C:任务执行完毕时的返回值类型。
需要完成以下几个方法的重写:
1:OnPreExecute 线程开始执行时,需要调用的方法
2:doInBackground 线程处理的关键方法,耗时的处理内容放到该方法中进行操作
3:OnProgressUpdate 线程处理更新处理进度值 值类型为【B】类型
4:OnPostExecute 当线程任务执行结束后,通过该方法操作主线程UI并完成结果响应