之前明明复习过,结果忘记了,面试的时候只根据实际使用说了String和基本数据类型,后来就说记不太清楚了,之后查了之后也可以传输实现Serializable或Parcelable接口的对象
项目中页面用的fragment,所以两个fragment之间使用了bundle传递数据,数据内容基本都是string类型和int类型,没有很在意这个问题,后期查询,翻了之前总结的面经里面有提到bundle传递的数据类型:string,基本数据类型,和实现serializable或Parcelable接口的对象
- 实现serializable或Parcelable接口的对象
这两个都是实现可序列化的,但是他们的区别在哪里呢
-
serializable接口会创建大量临时对象,需要进行大量垃圾回收
-
serializable界面更容易实现
-
Pracelable比serializable要快
-
Parcelable接口实现需要更多的时间
-
Parcelable中的对象可以通过intent传递
-
传递serializable对象
// MyObjects instance
MyObjects mObjects = new MyObjects("name", "age", "Address array here");
// Passing MyObjects instance via intent
Intent mIntent = new Intent(FromActivity.this, ToActivity.class);
mIntent.putExtra("UniqueKey", mObjects);
startActivity(mIntent);
// Getting MyObjects instance
Intent mIntent = getIntent();
MyObjects workorder = (MyObjects)
mIntent.getSerializableExtra("UniqueKey");
parcelable接口典型实现
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}