Android-异步消息处理机制2以及HandlerThread的介绍

之间在上篇文章中介绍过了Android的异步消息处理机制,这里再进行一些补充,说下多线程中的消息处理以及HandlerThread的介绍,如果你还不是很了解handler的机制,可以先看看上篇文章Android-异步消息处理机制(Handler,Looper,Message)

在上篇文章中开头说过我们平时在子线程中去更新ui的操作一般是通过handler来发送message的方式进行处理,但是其实还有几种更简便的方式来进行ui的操作:

  1. Handler的post()方法
  2. View的post()方法
  3. Activity的runOnUiThread()方法
    代码如下:

Android-异步消息处理机制-Handler,Looper,Message

相信大部分开发android的人使用Handler在子线程上去进行ui的操作这种模式已经滚瓜烂熟了,但是当你不去深入研究它的原理,和理清它与Looper和Message之间的关系时,遇到问题和bug的时候你就会无从下手,手忙脚乱。

技术也是一门学问,只知其一不知其二,你永远只会停留在基础。送给自己也是送给大家的一句话:你若不想做,总会找到借口;你若真想做,总会找到方法!

开始进入正题,什么是异步消息处理机制?
就应用程序而已,android系统中java的应用程序和其他系统上相同,都是靠消息驱动来工作的,它们的大致工作原理是:
*有一个消息队列,可以往这个消息队列中不断投递消息(进)
*有一个消息循环,可以不断的从这个消息队列中取出消息,进行处理。(出)
事件源把待处理的消息加入到消息队列中(默认是加至队尾,但是也会遇到插队的情况出现,而且不是插中间,直接插入至队列头,这种是属于大哥级别的消息),处理线程从消息队列头不断取出消息分发给对应的target进行处理。这种实现模式在android上主要就是靠我们的Handler,Looper来实现。