一直对Handler有所疑惑,今天做出决心要搞懂,现在粗略讲讲心得。
Handler拥有两个队列,一个是放线程的队列,我们就暂且叫做线程队列;而另外一个是放消息的队列,我们暂且叫做消息队列。
创建线程的方法在Java当中有两种,一种是继承Thread而另外的一种则是实现Runnable。在Android中我们比较常用的是实现Runnable,然后可以通过Handler的post方法或者是postDelayd方法把线程添加到线程队列当中。当需要停止的时候的是调用Handler的removeCallBacks方法。
说道消息队列,我们通过在Runnable中Handler的obtainMessage获得Message对象,然后通过Handler的sendMessage方法把消息压入到消息队列当中,最后通过复写Handler里面的HandlerMessage方法取得message来进行相应的处理。 以下就是大概的流程:
handler.post(runnable);
Handler handler = new Handler(){
public void handlerMessage(Message msg){
handler.post(runnable);
}
}
Runnable runnable = new Runnable(){
public void run(){
Message message = handler.obtainMessage();
handler.sendMessage(message);
}
}