handler机制

来源:互联网 发布:思迅天店软件 编辑:程序博客网 时间:2024/06/06 00:00
Handler

作用1:更新ui

作用2:发送处理消息。

后台工作线程不能更新ui,需要handler传递消息到主线程来更新ui

创建一个消息

   第一种:new Message()
   第二种: handler.obtain()在这个方法中,它很把消息的发送目标target设置为handler本身。

 发送消息:
    第一种:handler.sendMessage();
    第二种:message.sendToTarget();

使用handler的根本原因是:为了解决多线程并发的导致错乱的问题。
                                           如果每个线程都去更新ui,很有可能界面混乱。
                                          如果为更新界面的方法加上锁的话,对于需要大量绘制ui的操作效率及其底下。
                                          所以,android提供了handler机制,让所有的ui更新操作都放到主线程中,利用handler
                                           发送消息到主线程,形成一个消息队列,顺序执行ui更新。
handler,Looper,MessageQueue
handler发送消息出去,Looper负责接收消息,并把消息发送给目标(一般是handler本身)

  MessageQueue则是负责存储消息,由Looper来管理,包含在Looper这个类里面。

  创建线程自己的handler。首先调用Looper.prepare(),通过Looper.myLooper()可以获得本线程的Looper

   然后调用Looper.loop();开始轮询消息

  有消息则会进行处理,否侧阻塞。

   在主线程中它自己已经调用了这两个方法,创建了主线程的Looper对象,所以主线程中只要重写handler即可。

   handler在创建的时候可以指定Looper对象

  handler=new Handler(thread.getLooper){

 public void  handMessage(){}

};

       然后通过handler发送消息,消息传到这个线程去执行。也就相当于开启了一个子线程,

可以执行网络操作,io操作。



  

0 0
原创粉丝点击