Android多线程入门

最近感觉基础知识不太扎实,拿起郭神的《第一行代码》开始看,并记录来下阅读的内容,以方便以后的系统性的回忆。

  • Handler处理机制

  •   在Android系统中,主线程不能进行耗时的操作,当主线程阻塞时,系统将会抛出ANR异常。Handler处理机制主要包含MessageQueue/Message/Looper以及Handler。
      如使用场景:子线程更新主线程控件信息
      运行机制:子线程将线程的处理结果,通过Handler 将消息加入到MessageQueue队列中等待处理。Looper 调用loop()方法将队列中的消息依次提取并传递到handlerMessage方法中处理,最后在handleMessage方法中更新UI. 由于每个线程只有一个Looper对象和一个MessageQueue对象,同时异步线程处理又是经常需要更新主线程,个人感觉主线程中消息太多/线程数量太多,也许会影响性能。
    

  • AsyncTask异步消息处理机制
  •    AsyncTask也是异步消息处理机制的另一种方法。由于之前编程经常使用AsyncTask,因此对该部分内容还是比较生疏。
       AsyncTask是一个抽象类,因此如果要使用它,需要声明一个类去继承并实现它的关键方法。
       在声明类时,可以为其制定三个泛型参数 
              A: 在执行AsyncTask时,需要传入的参数
              B:后台执行时,进程的执行进度值类型
              C:任务执行完毕时的返回值类型。
       需要完成以下几个方法的重写:
              1:OnPreExecute  线程开始执行时,需要调用的方法
              2:doInBackground 线程处理的关键方法,耗时的处理内容放到该方法中进行操作
              3:OnProgressUpdate 线程处理更新处理进度值 值类型为【B】类型
              4:OnPostExecute 当线程任务执行结束后,通过该方法操作主线程UI并完成结果响应

    你可能感兴趣的:(Android多线程入门)