bundler的机制相当于Map集合 主要存储数据的 一般多用于Activity之间的跳转 数据的传递
activity代码:
package com.handler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
public class BundlerTestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("Activity--->" + Thread.currentThread().getId());
//实现了使用Looper对象来处理消息队列的功能.实现真正的异步
HandlerThread handlerThread = new HandlerThread("handler_thread");//该类循环处理消息
handlerThread.start();
//Looper是循环的意思。该类提供循环从队列中提取消息来处理。没有消息的话队列就处于休眠状态
MyHandler myHandler = new MyHandler(handlerThread.getLooper());
Message msg = myHandler.obtainMessage();
//msg.arg1 = "13"; //相比setData消耗比较小
//简单用法
//msg.obj = "abc";//Message对象
//如果要传递大量数据
Bundle b = new Bundle();
b.putInt("age", 20);
b.putString("name", "Jhon");
msg.setData(b);//里面放的是Bundle对象
msg.sendToTarget();//发送到生成该message对象的handler
}
class MyHandler extends Handler{
public MyHandler(){
}
public MyHandler(Looper looper){//绑定looper所在的线程
super(looper);
}
@Override
public void handleMessage(Message msg) {//Message对象
// TODO Auto-generated method stub
//super.handleMessage(msg);
//String s = (String) msg.obj;
//取出Bundle对象
Bundle b = msg.getData();
int age = b.getInt("age");
String name = b.getString("name");
System.out.println("age is: " + age + " name is:" + name);
System.out.println("Handler--->" + Thread.currentThread().getId());
System.out.println("handlerMessage");
}
}
}