异步消息处理机制
1. 异步消息实现
Android异步消息处理机制主要有四个组成部分,分别是:Message、MessageQueue、Looper、Handler。
1.1 Message
Message封装在线程之间传递的消息,可以携带少量的信息,用于在不同线程之间交换数据。可以使用what字段,arg1和arg2携带一些整型数据,obj字段携带一个object对象。
1.2 MessageQueue
消息队列要用于存放所有通过Handler发送的消息,等待被处理,每个线程只有一个MessageQueue对象。
1.3 Looper
Looper是线程的MesssageQueue管家。调用Looper的loop()方法后,进入无线循环中。然后读取而且使用Handler的handlerMessage()处理消息。线程只有一个Looper对象。
1.4 Handler
【异步消息处理机制】Handler主要用来发送和处理消息。sendMessage发送消息,handleMessage处理消息。
2. 处理流程图
文章图片
20130817090611984.png 3. 示例代码
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.yit.cashier.main.R;
public class TestActivity extends Activity {Button button ;
public static final int UPDATE = 1 ;
private Handler handler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
//根据消息类型不同进行不同的处理
case UPDATE :
//执行相关的UI操作
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button) ;
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {new Thread(new Runnable(){
@Override
public void run() {
//相关操作执行完之后,需要用到UI操作时
Message msg = new Message() ;
msg.what = UPDATE ;
handler.sendMessage(msg) ;
}}).start();
;
}
});
}
}
推荐阅读
- 危险也是机会
- python学习之|python学习之 实现QQ自动发送消息
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 事件处理程序
- 爬虫数据处理HTML转义字符
- 深入浅出谈一下有关分布式消息技术(Kafka)
- Android|Android BLE蓝牙连接异常处理
- 【冷处理】亲子时间管理检视Day63
- 夏夜|夏夜 我们
- spring|spring boot中设置异步请求默认使用的线程池