在前面的博文中提到了Parcel和Parcelable,今天就介绍一下Bundle。
Bundle的api文档介绍是这样的: A mapping from String values to various Parcelable types。就是说,这是一个从字符串到不同类型的Parcelable类型数据的映射的Map集合。
其内部,包含三大部分:
1)Bundle EMPTY;
2)Map< String , Object > mMap;
3)其他的一些标识或者字符串以及成员
除了集合具备的函数操作,如getXXXX(),putXXXX()外,Bundle还支持将parcel数据进行去包裹化,以及一些重要的获取集合特征的函数以及集合操作的函数,如getSize和remove之类的函数。
由于,Bundle是存储的是值类型时Parcelable或者是基本的数据类型,所以它也是用来传输数据的。
Bundle的两种常见用法:
1)与Intent结合:
数据的发送(从Activity到OtherActivity)
Bundle bundle = new Bundle();
bundle.putInt("sex", sex);
bundle.putString("height", height);
Intent intent = new Intent(Activity.this,OtherActivity.class);
intent.putExtras(bundle);
startActivity(intent);
数据的接受:
Bundle bundle = this.getIntent().getExtras();
String sex = bundle.getString("sex");
double height = bundle.getDouble("height");
----------
与Message结合:
Message msg = myHandler.obtainMessage();
Bundle b = new Bundle();
b.putInt(“age” , 23);
b.putString(“name” , “son”);
msg.setData(b);
msg.sendToTarget();
class MyHandler extends Handler{
public void handleMessage(Message msg){
Bundle b = msg.getData();
int age = b.getInt(“age”);
String name = b.getString(“name”);
}
}
“`