Android 中Handler消息机制
来源:互联网 发布:linux防火墙配置命令 编辑:程序博客网 时间:2024/06/05 18:06
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。
简单的说 在Android 中Handler 是用于线程间的收发消息 。对于UI的操作通常需要放在主线程中进行操作 如果在子线程中有关于UI的操作,那么就需要把数据消息作为一个Message对象发送到消息队列中,然后,由Handler中的handlerMessage方法处理传过来的数据信息,并操作UI。当然,Handler对象是在主线程中初始化的,因为它需要绑定在主线程的消息队列中
分发消息方法有如下
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable,long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
和多线程
post方法虽然发送的是一个实现了Runnable接口的类对象,但是它并非创建了一个新线程,而是执行了该对象中的run方法。也就是说,整个run中的操作和主线程处于同一个线程。
这样对于那些简单的操作,似乎并不会影响。但是对于耗时较长的操作,当它被加入到消息队列中之后执行会占用很长的时间,以至于处于同一线程的其他操作无法继续执行,就会出现“假死”。为了解决这个问题,就需要使得handler绑定到一个新开启线程的消息队列上,在这个处于另外线程的上的消息队列中处理传过来的Runnable对象和消息。
这样,当使用sendMessage方法传递消息或者使用post方法传递Runnable对象时,就会把它们传递到与handler对象绑定的处于另外一个线程的消息队列中,它们将在另外的消息队列中被处理。而主线程还会在发送操作完成时候继续进行,不会影响当前的操作。
这里需要注意,这里用到的多线程并非由Runnable对象开启的,而是ThreadHandler对象开启的。Runnable对象只是作为一个封装了操作的对象被传递,并未产生新线程。
- Android 中Handler消息机制
- Android中Handler消息机制
- Android 中 Handler 消息传递机制
- Android 中 Handler 消息传递机制
- Android中Handler消息传递机制
- Android 中 Handler 消息传递机制
- Android中消息处理机制-Handler剖析
- Android中Handler消息机制浅谈
- Android中Handler传递消息机制详解
- Android中Handler消息处理机制原理
- 深入解析Android中Handler消息机制
- Android Handler消息机制
- android handler消息机制
- android handler消息机制
- Android Handler消息机制
- android handler消息机制
- android handler消息机制
- Android:Handler消息机制
- Oracle建表,建序列,建触发器,自动生成唯一主键。dual解释
- 泛型方法
- automake 使用库文件
- ajax返回的是空值
- TinyOS05:Avrora的安装及简介
- Android 中Handler消息机制
- iOS应用安全开发总结
- 计算机视觉有用的资源(很多主页含有代码)
- 自定义控件(2)---ColorMatrixColorFilter色彩矩阵颜色过滤器
- iOS -- 6位密码验证
- 使用WebView时请使用RelativeLayout
- C++中的volatile
- 2015网龙笔试题
- 使用Quick-Cocos2d-x开发植物大战僵尸04-展示植物卡片与僵尸