写在前面:
如果你在看本文之前没有对Android消息机制作过了解,可能会比较吃力,关于源码,不需要全部看懂,能看懂其中关键的几句代码就行了。如果在阅读过程中感到吃力,请直接跳到结尾部分看概述。
最近在看《Android开发艺术探索》,感觉真的是一本好书,恩,让我非常有读完欲望的一本书。话不多说,分享一下我的读书收获。
Android中的耗时操作需要在子线程中完成,当这些操作完成后可能会需要对UI进行相应的更新。但是Android中的UI不是线程安全的,在多线程中并发访问可能会导致UI控件处于不可预期的状态。Google没有用上锁机制来解决这个问题,而是让开发者通过Handler切换线程来达到更新UI的目的。Handler是Android消息机制的上层接口,想要解析Android消息机制还需要了解Looper和**消息队列(MessageQueue)**。
在具体的了解Handler、Looper和MessageQueue之前,先让我们把我们平时切换线程的流程过一遍。首先我们在主线程中创建Handler,然后在子线程中通过handler的sendMessage方法将携带子线程操作结果的数据传出,通过handler的handleMessage方法进行UI的更新,代码如下: