这个代码中学了在handler中传递数据可以用多种形式,这次用Bundle来实现。


Code
package tk.handertest;

import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("Activity-->"+Thread.currentThread().getId());
        //生成一个handlerThread对象,实现使用Looper来处理消息队列的功能
        HandlerThread handlerThread=new HandlerThread("handlerThread");
        //在使用HandlerThread的getLooper()方法之前,必须调用start方法。
        handlerThread.start();
        MyHandler myhandler = new MyHandler(handlerThread.getLooper());
        Message msg=myhandler.obtainMessage();
        msg.obj="abc";
        
        Bundle b=new Bundle();
        b.putInt("age", 20);
        b.putString("name", "Jhon");
        msg.setData(b);

        //将msg发送到目标对象,所谓的目标对象,就是生成该msg对象的handler对象
        msg.sendToTarget();//会调用hanglemessage方法
        
    }

    class MyHandler extends Handler{
    	public MyHandler(){
    		
    	}
    	public MyHandler(Looper looper){
    		super(looper);
    	}
    	
    	@Override
    	public void handleMessage(Message msg){
    		String string=(String)msg.obj;
    		Bundle b=msg.getData();
    		int age=b.getInt("age");
    		String name=b.getString("name");
    		System.out.println("age is "+age);
    		System.out.println("name is "+name);
    		System.out.println("muhandler-->"+Thread.currentThread().getId());
    		System.out.println("handlerMessage");
    	}
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}