message handler

 主线程中不执行耗时操作,子线程不更新UI

因此,Android提供了Handler来解决这个问题

子线程中 sendMessage ,通知主线程更新UI

**整个过程:

新建Handler,通过sendMessage或者post发送消息,Handler调用sendMessageAtTimeMessage交给MessageQueue


MessageQueue.enqueueMessage方法将Message以链表的形式放入队列中


Looperloop方法循环调用MessageQueue.next()取出消息,并且调用HandlerdispatchMessage来处理消息


dispatchMessage中,分别判断msg.callback、mCallback也就是post方法或者构造方法传入的不为空就执行他们的回调,如果都为空就执行我们最常用重写的handleMessage

runOnUiThread看起来很简单,其实原理也和上面的一样

猜你喜欢

转载自542255641.iteye.com/blog/2394960