本文参考了http://blog.csdn.net/liao277218962/article/details/48757709,感谢作者。
系统为每个应用维护一个进程,每个进程维护一个消息队列MessageQueue和一个Looper,他们可以绑定多个Handler。
Handler的新建
新建handler源码从图中可以看到,创建Handler时会获取全局的Looper,再通过Looper获取MessageQueue的实例。
Handler的定位和作用(个人理解,有错望指正):
一个信息载体,可以在进程的主线程和子线程创建。
主要作用在于线程间的信息传递,举个栗子:
UI线程需要获取显示在界面上的数据,需要进行耗时的操作,这时需要开启子线程来执行下载,下载的数据如何能给到
UI线程,这就使用到了Handler的sendMessage,把一个消息添加到Messagequeue中,在UI线程实现handleMessage
获取对应的Message对象,并在里面实现自己的业务逻辑,包括更新UI等。
网友评论