异步消息处理机制

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. 处理流程图

异步消息处理机制_第1张图片
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(); ;
            }
        });

    }
}

你可能感兴趣的:(异步消息处理机制)