異步消息處理機(jī)制

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

    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容