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操作。
第二种: handler.obtain()在这个方法中,它很把消息的发送目标target设置为handler本身。
第一种:handler.sendMessage();
第二种:message.sendToTarget();
如果每个线程都去更新ui,很有可能界面混乱。
如果为更新界面的方法加上锁的话,对于需要大量绘制ui的操作效率及其底下。
所以,android提供了handler机制,让所有的ui更新操作都放到主线程中,利用handler
发送消息到主线程,形成一个消息队列,顺序执行ui更新。
handler,Looper,MessageQueue
handler发送消息出去,Looper负责接收消息,并把消息发送给目标(一般是handler本身)
0 0
- Handler机制
- Handler机制
- handler机制
- handler机制
- Handler机制
- Handler机制
- handler机制
- Handler机制
- handler机制
- Handler机制
- handler机制
- Handler机制
- Handler机制
- Handler机制
- handler机制
- handler机制
- Handler机制
- Handler机制
- arm汇编:mrs与msr
- 极验验证码的破解2-图片还原和滑块位置求解
- 好用的php代码片段收集
- Hadoop的Slots概念
- 疑问二
- handler机制
- yarn状态机库
- Java 并发 教程 - 序
- Android 第一次运行程序提示框操作
- hhh,图床
- Android Studio 打包出现not in translated in "zh"错误
- Redis 常用命令学习笔记
- 初步整理响应式笔记01
- jquery02总结