Android 线程消息机制简介
来源:互联网 发布:美色视频系统源码 编辑:程序博客网 时间:2024/06/05 03:22
http://ask.android-studio.org/?/article/101
Android线程消息机制是本文所要讨论的内容,在此之前我们需要先简单介绍下(之后会详细说明)线程消息机制中的四个主要成员,它们分别是Looper、Handler、Message和MessageQueue:
- Looper是消息循环处理器,它负责从MessageQueue(消息队列)中提取一个Message对象进行处理。
- Handler是消息发送者,它负责将Message发送到MessageQueue中等候被处理。
- Message是消息载体,其内部保存了由我们定义的要被处理的业务逻辑以及相关的数据。
- MessageQueue是消息队列,Handler将Message发送到消息队列中,消息队列负责维护这些待处理的Message。
接下来让我们来看看Looper、Handler、Message和MessageQueue之间是如何协同工作构建起消息循环机制的
- Handler向MessageQueue发送消息Message,发送的消息并不会马上被执行,而是在队列中等待。
- MessageQueue负责维护Message,当Looper要从MessageQueue中提取一个Message的时候,MessageQueue会按照一定规则弹出一个Message。
- Looper进行死循环操作,从MessageQueue中不断提取Message进行处理。
下面是一个简单的示例,Activity里有一个Progress Bar,我们先开一个线程模拟耗时操作(比如下载文件),由于子线程是不能够直接修改主线程UI的,所以我们必须通过消息机制来完成进度条的更新操作,具体的代码如下:
public class MainActivity extends ActionBarActivity {
private ProgressBar mPbTest;
//定义一个Handler内部类,并且重写handleMessage(Message msg)方法更新进度条,
//handleMessage(Message msg)是在主线程中被调用的,所以可以修改UI的。
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
mPbTest.setProgress(msg.arg1);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPbTest = (ProgressBar) findViewById(R.id.pbTest);
}
@Override
protected void onStart() {
super.onStart();
//开启子线程模拟耗时操作,但是子线程是不能直接更新UI线程的进度条的,所以需要用Handler
new Thread() {
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
Message msg = mHandler.obtainMessage();
msg.arg1 = i;
mHandler.sendMessage(msg);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}
阅读全文
0 0
- Android 线程消息机制简介
- android下消息机制简介
- Android消息处理机制简介
- Android Handler 线程消息机制
- Android 线程消息循环机制
- Android 线程消息循环机制
- Android线程与消息机制
- Android线程与消息机制
- android消息机制 java层简介
- Android消息机制(1)- 简介
- Android消息处理机制(一):简介
- 图解 Android Handler 线程消息机制
- 图解 Android Handler 线程消息机制
- 图解 Android Handler 线程消息机制
- 图解 Android Handler 线程消息机制
- Android消息队列及线程机制详解
- Android消息队列及线程机制详解
- Android消息队列及线程机制
- 设计模式学习笔记(六)建造者模式
- (四) 正则
- C++编程求三角形角平分线与对边的交点坐标
- pygam添加图像
- 第十五周项目一(7)——归并排序
- Android 线程消息机制简介
- tcp(tcp抓包fenxi)
- SPRING MVC_3_02_参数解析器
- com.docker.osx.hyperkit.linux failed to start Exit code 1
- arch-5
- WebForm系统的单语言升级为多语言改造方案
- 推荐系统概述
- 计蒜客--农场看守(简单的欧拉回路)
- 分布式、服务化的ERP系统架构设计