异步消息处理机制

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(); ; } }); } }

    推荐阅读