Android的消息机制

上一篇学习了Android系统和应用程序的简单启动过程,并学习了android的进程回收机制,这一篇要学习的是Android的消息机制。

 

我们知道,主线程启动会加载activityThread类,函数都是在消息循环中执行的,主线程启动会自带一个消息循环,那么子线程同样可以如此。

Android有两种线程,一个带消息循环(主线程,android.os.HandlerThread),另一个是不带消息循环,执行一次就结束的(java.lang.Thread)

 

上图是MessageQueue Message Looper Handler的交互图(来自老罗的博客)。

 

老罗的博文:

http://blog.csdn.net/luoshengyang/article/details/6905587

有时候我们需要创建常驻的子进程来执行一些和界面无关的任务(比如launcher点击打开一个应用程序,实际上是给子线程的消息队列发送消息,子线程再从消息循环处理消息再做进一步处理);同样也许要在在子线程执行后台交互任务,然后反馈给主线程更新UI。、

两个类:

activityThread这个类在进程创建的时候会自动load进来,作为主线程的消息队列。

HandlerThreadThread类+Loop的结合体,也可以用普通的线程+Looper.prepare() [调用这个方法会创建一个Looper实例,同时会创建消息队列]Looper.loop()   前者是创建Looper对象和消息队列对象,后者是执行消息队列循环。

 

总结:消息机制的应用必要性,消息机制的原理(一个图)

 

Android程序是通过消息机制来驱动的,比如一个主线程需要执行一个任务,那么只需要发消息给子线程即可,之后如何处理这个任务由子线程定义,主线程就可以继续干其它事了,这样提高了程序的并发性以及效率,比如点击图标启动AppAsyncTask也是运用消息机制工作的。

主线程的消息循环类为activityThread 子线程要实现可以继承自HandlerThread,其实这个类就是一个普通的线程加上looper而已。

你可能感兴趣的:(Android的消息机制)