Handler简介

原创 2016年05月31日 17:15:32

对于Android 的UI操作只允许UI线程修改Activity的UI组件,当程序启动时,会同时启动一条主线程。Handler则是子线程和主线程之间的桥梁,我们可以通过handler通知主线程刷新UI,Handler可以用来发送消息也可以用来处理消息

Hnalder中工作原理

Message:Message是Handler接收和处理消息的对象

Looper:每个线程只能有一个Looper轮询器,他的loop方法负责读取MessageQueue消息对列中的消息读到消息后把消息交给发送该消息的Hanler处理。UI线程中系统已经初始化了一个Looper对象,若是子线程则程序员必须自己创建一个Looper对象通过prepare()方法拿到,然后创建Handler实例,重写handleMessage()方法,调用Looperloop()方法启动looper

MesageQueue:消息队列,它采用先进先出的方式管理消息,创建Looper时会在他的构造器中创建MessageQueue对象

 

总结起来就是handler发送的消息保存到消息队列中,Looper不断取出消息队列中的消息交给handler处理。


Handler的方法

Void handleMessage(Message msg):处理消息的方法,定义Handler对象时重写的方法

Final Boolean hasMessages(int what):检查消息队列中是否包含what属性为指定值的消息

Final Boolean hasMessages(int what,Objectobject):检查消息队列中是否包含what属性为指定值且Object属性为指定对象的消息

sendEnptyMessage(int what):发送空消息

SendEmptyMessageDelayed(int what,longdelayMillis):指定多少毫秒之后发送消息

Boolean sendMessage(Message msg):发送消息

Boolean sendMessageDelayed(Message msg,longdelayMillis):指定多少毫秒后发送消息

post(Runnable b):添加一个Runnable对象到消息队列,Runnable对象中的run方法中的代码是运行在主线程中的

postDelayed(Runnable r,long delayMillis):多少毫秒后发送一个Runnable对象到消息队列,Runnable对象中的方法是在主线程中执行的

Message obtainMessage():获取消息对象

handler.removeCallbacksAndMessages(null);//移除消息队列中的所有消息//当handler使用完毕后要移除不用的消息

使用

Handler handler = new Handler(){
    public void handleMessage(android.os.Message msg) {
        switch (msg.what) {
        case 0:
            onConnectionDisconnected();
            break;
        case 1:
            onConnectionConnected();
            break;
            
        default:
            break;
        }
    }
};
handler.sendMessage();
上面是handler的一些基本介绍,下面是handler的一些深入了解
handler不一定是主线程的,当我们new Handler时,实际是实例化的当前线程的Looper,若我们在子线程中实例化,
这个handler的轮询器是子线程的不能用来刷新主线程ui,而我们若希望在任何线程中都能获取主线程的handler则可以new Handler(Looper.getMainLooper())
很好的参考:http://blog.csdn.net/thanklife/article/details/17006865


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Handler简介及分析

Handler简介: 一个Handler和线程,消息队列关联起来,允许你发送,处理,Message和Runnable。每个Handler实例和单独的线程,消息队列关联,当你创建一个新的handl...

android消息处理机制学习(一)-Handler,Message,MessageQueue,Looper简介

android消息处理机制,是android当中最重要的话题之一,来看看官方文档的分析(这里都直接粘贴处国内的镜像网站,快捷方便): 一 .Hanler简介: 源码地址:http://wear.tec...

Webservice_16_SOAP的handler简介

非常感谢孙浩老师。 LogicalHandler和SOAPHandler LogicalHandler只能获取SOAPBody的信息 SOAPHandler可以获取SOAPMessage的信息 ...

处女男学Android(三)---Handler简介以及初步应用

前言

Handler的基本用法和原理简介

介绍      在平时的安卓开发过程中,Handler一定不少见,Handler是Android消息机制的上层接口,这使得在开发过程中只需要和Handler交互即可。很多人认为Handler的作用就是...

Android 系统Handler用法简介

Android 系统Handler用法简介   在介绍ApiDemo中的Service示例之前有必要对Android的线程做个说明。 在Application启动后,Android系统会为这...

定时器,Handler,Thread,Runnable的使用简介

在Android开发中,定时器一般有以下3种实现方法: 一、采用Handler与线程的sleep(long)方法 二、采用Handler的postDelayed(Runnable, long)方法 ...

Android Handler简介及使用 HandlerThread的使用

本文出自:http://blog.csdn.net/zhongnan09/article/details/6564747 在Android系统中,当一个应用程序启动时,首先会启动一个主线程(也被...

Handler-简介和用法

Handler——简介和用法 Handler中常用的四个方法: sendMessage(Message msg) sendMessageDelayed(Message msg, long dela...
  • gogmz
  • gogmz
  • 2015年08月11日 17:21
  • 235

Handler实例

  • 2014年09月13日 08:52
  • 112KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Handler简介
举报原因:
原因补充:

(最多只允许输入30个字)