android消息传递机制---handler
2016-03-31 00:23
537 查看
出于性能优化考虑,Android的UI线程操作并不是安全的,也就是说,几个线程同时操作UI可能会导致线程安全问题,为了解决这个问题,android规定只有UI线程也就是主线程才能修改UI界面,那么当其他线程想要改变UI线程该怎么做呢?这时候就需要Handler消息传递机制。。。
原料: Handler类,MessageQueue类,Looper类
Looper : 每一个类至多只有一个Looper,他负责管理 MessageQueue,会不断将MessageQueue中的消息往Handler分发(消息分发靠的是loop()函数)
构造函数如下:
private Looper() {
mQueue = new MessageQueue();
mRun = true;
mThread = Thread.getCurrentThread();
}
private意为着不能直接new该对象,也就是说想要new该对象必须调用Looper,prepare()方法。
MessageQueue:由Looper管理的储存消息的队列。
Handler:负责往对应的Looper管理的MessageQueue发送消息,也负责处理Looper分发过来的消息。
注意:因为在主线程中系统已经初始化了一个Looper,所以并不需要new相关的Looper及其相关的函数。
在非主线程中使用Handler步骤:
1. 调用Looper的prepare()函数为当前线程创建一个Looper对象(它的构造器会自动创建相关的MessageQueue)
2.创建Handler子类的实现,重写其handlerMassage()方法,这个方法是负责处理传过来的信息的
3.调用Looper.loop()方法启动Looper;
原料: Handler类,MessageQueue类,Looper类
Looper : 每一个类至多只有一个Looper,他负责管理 MessageQueue,会不断将MessageQueue中的消息往Handler分发(消息分发靠的是loop()函数)
构造函数如下:
private Looper() {
mQueue = new MessageQueue();
mRun = true;
mThread = Thread.getCurrentThread();
}
private意为着不能直接new该对象,也就是说想要new该对象必须调用Looper,prepare()方法。
MessageQueue:由Looper管理的储存消息的队列。
Handler:负责往对应的Looper管理的MessageQueue发送消息,也负责处理Looper分发过来的消息。
注意:因为在主线程中系统已经初始化了一个Looper,所以并不需要new相关的Looper及其相关的函数。
在非主线程中使用Handler步骤:
1. 调用Looper的prepare()函数为当前线程创建一个Looper对象(它的构造器会自动创建相关的MessageQueue)
2.创建Handler子类的实现,重写其handlerMassage()方法,这个方法是负责处理传过来的信息的
3.调用Looper.loop()方法启动Looper;
相关文章推荐
- lesson 5 保存数据 上
- android 聊天程序(一)
- android xml tools 介绍(一)
- android 开发50个技巧面向切面编程思想
- Android java 开发中常用的工具类
- Android 工程运行报错 Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOv
- Android 工程运行报错 Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOv
- android studio 配置dragger
- android studio 配置dragger
- android listview onItemClick不执行
- android listview onItemClick不执行
- android高效读取大图片 防止OOM
- android高效读取大图片 防止OOM
- android 代码设置图片自适应屏幕
- android 代码设置图片自适应屏幕
- Android Studio cvs 状态颜色
- Android Android SDK 使用镜像更新
- Android Studio cvs 状态颜色
- Android Android SDK 使用镜像更新
- Android 瀑布流StaggeredGridView 部分手机只显示第一行item问题