handler的工作原理

一、工作机制

  • 在子线程中创建一个handler的成员变量;
  • 在子线程得到handler的引用,调用sendMessage给主线程发送一个消息
  • 在handler中重写handlermessage,修改ui界面

二、工作原理

    前提知识:所有的ui界面的操作系统,后台都运行者一个死循环,它在不停的监听和接收用户发出的指令,一旦接收指令就会立即执行
     子线程调用handler的sendMessage方法,把消息发送给handler,handler把消息放到Looper内部维护消息队列里,Looper不停地从消息队列取消息
     ,取到消息后在发送给handler,handler再修改ui界面。

三、图形讲解:



学习总结:

在学习过程中发现如果在更新ui界面的时候传递数据(比如说修改ui界面上的TextView控件上的文本内容)这个时候我们可以这样做
  1. Message msg=Message.obtain();
  2. msg.obj="要传递的内容"
  3. handler.sendMessage(msg);
然后在handleMessage()方法中将TextView文本框中的内容跟新
  1. private Handler handler=new Handler(){
  2. @Override
  3. public void handleMessage(Message msg) {
  4. String content=msg.obj;
  5. //更新控件tv上的文本内容
  6. tv.setText(content);
  7. }
  8. };
如果我们只是想执行handleMessage()方法中的内容,这时只要通过sendMessage()随便向handler发送一条数据即可,这样handler也会执行它的handlerMessage()方法中的内容
比如,我们从数据库中分批取出数据来跟新ui界面






posted @ 2015-01-27 23:15  就不呵呵呵  阅读(516)  评论(0编辑  收藏  举报