Handle 消息机制

android中Handle类的主要作用:

1.在新启动的线程中发送给消息

2.在主线程获取、处理消息

为什么要用Handle这样的一个机制:

因为在Android系统中UI操作并不是线程安全的,如果多个线程并发的去操作同一个组件,可能导致线程安全问题。为了解决这一个问题,android 制定了一条规则:只允许UI线程来修改UI组件的属性等,也就是说必须单线程模型,这样导致如果在UI界面进行一个耗时叫长的数据更新等就会形成程序假死 现象 也就是ANR异常,如果20秒中没有完成程序就会强制关闭。所以比如另一个线程要修改UI组件的时候,就需要借助Handler消息机制了。

Handle发送和处理消息的几个方法:

1. void  handleMessage( Message  msg):处理消息的方法,该方法通常被重写。

2.final boolean hasMessage(int  what):检查消息队列中是否包含有what属性为指定值的消息

3.final boolean hasMessage(int what ,Object object) :检查消息队列中是否包含有what好object属性指定值的消息

4.sendEmptyMessage(int what):发送空消息

5.final Boolean send EmptyMessageDelayed(int what ,long delayMillis):指定多少毫秒发送空消息

6.final  boolean sendMessage(Message msg):立即发送消息

7.final boolean sendMessageDelayed(Message msg,long delayMillis):多少秒之后发送消息

与Handle工作的几个组件Looper、MessageQueue各自的作用:

1.Handler:它把消息发送给Looper管理的MessageQueue,并负责处理Looper分给它的消息

2.MessageQueue:采用先进的方式来管理Message

3.Looper:每个线程只有一个Looper,比如UI线程中,系统会默认的初始化一个Looper对象,它负责管理MessageQueue,不断的从MessageQueue中取消息,并将

相对应的消息分给Handler处理

在线程中使用Handler的步骤:

1.调用Looper的prepare()方法为当前线程创建Looper对象,创建Looper对象时,它的构造器会自动的创建相对应的MessageQueue

2.创建Handler子类的实例,重写HandleMessage()方法,该方法处理除UI线程以外线程的消息

3.调用Looper的loop()方法来启动Looper

来自http://blog.csdn.net/x605940745/article/details/13001279,更多详细代码可进查看

更详细在http://www.cnblogs.com/angeldevil/p/3340644.html

时间: 2024-08-30 18:10:38

Handle 消息机制的相关文章

采用handle消息机制实现轮播效果

1 // 自动轮播条显示 2 if (mhandle == null) { 3 mhandle = new Handler() { 4 public void handleMessage(Message mes) { 5 6 int item = vp_topnews.getCurrentItem(); 7 if (item < topnews.size() - 1) { 8 item++; 9 } else { 10 item = 0; 11 } 12 vp_topnews.setCurren

Broadcom的消息机制

在Broadcom中提供了自己的消息机制,有两种消息形式:Request/Response and Event(事件) Request/Response消息:进程之间的通信都是通过smd,所有的消息都是先发送到smd,smd收到信息后,如果消息目的是smd的就做相应的操作,如果不是,就把这个消息route出去 Event messages :对某些事件感兴趣的进程,可以CMS_MSG_REGISTER_EVENT_INTEREST注册此感兴趣事件.事件发生时,将事件信息发送给smd,smd再将事

深入Windows内核——C++中的消息机制

<编程思想之消息机制>一文中我们讲了消息的相关概念和消息机制的模拟,本文将进一步聊聊C++中的消息机制. 从简单例子探析核心原理 在讲之前,我们先看一个简单例子:创建一个窗口和两个按钮,用来控制窗口的背景颜色.其效果如下: 图 2 :效果图 Win32Test.h #pragma once #include <windows.h> #include <atltypes.h> #include <tchar.h> //资源ID #define ID_BUTTO

(转载)Windows消息机制

文章出处:http://www.cnblogs.com/watsonyin/archive/2005/12/12/295536.html Windows消息机制 Windows操作系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的.如果不理解Windows消息处理机制,肯定无法深入的理解Windows编程.可惜很多程序员对Windows消息只是略有所闻,对其使用知之甚少,更不了解其内部实现原理,本文试着一步一步向大家披露我理解的Windows消息机制.可以说,

Android Framework 分析---消息机制Native层

在Android的消息机制中,不仅提供了供Application 开发使用的java的消息循环.其实java的机制最终还是靠native来实现的.在native不仅提供一套消息传递和处理的机制,还提供了自定义文件描述符的I/O时间的监听机制.下面我们从具体代码中分析一下. Native层的关键类: Looper.cpp.该类中提供了pollOnce 和wake的休眠和唤醒机制.同时在构造函数中也创建 管道 并加入epoll的机制中,来监听其状态变化. Looper::Looper(bool al

【win32】day04-Win32消息机制

消息机制 过程驱动:程序是按照我们预先定义好的顺序 执行,每执行一步,下一步都已经按照预定的顺序继续执行,直到程序结束. 事件驱动:程序的执行顺序是无序的.某个时间点所执行的代码,是由外界通知.由于我们无法决定用户执行顺序,所以代码的执行也是无序. Win32的消息机制 -事件驱动. Win32消息程序 2.1 Win32窗口注册 2.2 Win32窗口创建 2.3 WIn32消息循环 2.3.1 GetMessage BOOL GetMessage( LPMSG lpMsg,//存放获取到的消

编程思想之消息机制

编程思想之消息机制 消息机制 从一个剧情开始 路遥的<平凡的世界>因为翻拍成电视剧,又再次火起来了!我们就从这里开始吧,其小说是以这样一个场景开头的: 在一个半山腰县立高中的大院坝里,在一个校园内的南墙根下,按班级排起了十几个纵队的年轻男女,各班的值日生正忙碌地给众人分发饭菜-- 菜分为甲.乙.丙三等,甲菜以土豆.白菜.粉条为主,还有可人大肉片,乙菜没有肉,丙菜只有清水煮白萝卜.主食也分为三等:白面馍,玉米面馍,高粱面馍,白.黄.黑分别代表了三种差别,学生们戏称欧洲.亚洲.非洲.每个人的饭菜都

Android Handler AsyncTask 消息机制

一.Android消息机制一 Android 有一种叫消息队列的说法,这里我们可以这样理解:假如一个隧道就是一个消息队列,那么里面的每一部汽车就是一个一个消息,这里我们先忽略掉超车等种种因素,只那么先进隧道的车将会先出,这个机制跟我们android 的消息机制是一样的. 角色描述 1. Looper:(相当于隧道) 一个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue( 车队,消息隧道) . 2. Handler: 你可以构造Handler 对象来与Looper

深入解析Android中Handler消息机制

Android提供了Handler 和 Looper 来满足线程间的通信.Handler先进先出原则.Looper类用来管理特定线程内对象之间的消息交换(MessageExchange).Handler消息机制可以说是Android系统中最重要部分之一,所以,本篇博客我们就来深入解析Android中Handler消息机制. Handler的简单使用 为什么系统不允许子线程更新UI 因为的UI控件不是线程安全的. 如果在多线程中并发访问可能会导致UI控件处于不可预期的状态,那为什么不对UI控件的访