1. 異步消息實(shí)現(xiàn)
Android異步消息處理機(jī)制主要有四個(gè)組成部分,分別是:Message、MessageQueue、Looper、Handler。
1.1 Message
Message封裝在線程之間傳遞的消息,可以攜帶少量的信息,用于在不同線程之間交換數(shù)據(jù)??梢允褂脀hat字段,arg1和arg2攜帶一些整型數(shù)據(jù),obj字段攜帶一個(gè)object對(duì)象。
1.2 MessageQueue
消息隊(duì)列要用于存放所有通過Handler發(fā)送的消息,等待被處理,每個(gè)線程只有一個(gè)MessageQueue對(duì)象。
1.3 Looper
Looper是線程的MesssageQueue管家。調(diào)用Looper的loop()方法后,進(jìn)入無線循環(huán)中。然后讀取而且使用Handler的handlerMessage()處理消息。線程只有一個(gè)Looper對(duì)象。
1.4 Handler
Handler主要用來發(fā)送和處理消息。sendMessage發(fā)送消息,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){
//根據(jù)消息類型不同進(jìn)行不同的處理
case UPDATE :
//執(zhí)行相關(guān)的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() {
//相關(guān)操作執(zhí)行完之后,需要用到UI操作時(shí)
Message msg = new Message() ;
msg.what = UPDATE ;
handler.sendMessage(msg) ;
}
}).start(); ;
}
});
}
}