android在Intent传输的过程中需要使用Bundle传输数据,然而在数据多的情况下需要Bundle直接传一个Obj,这时候就需要Obj实现Serializable或Parcelable接口。
在android中尽量使用Parcelable,因为Serializable比较耗内存,会频繁的调用GC。使用示例:
Serializable:
在使用Android studio工具时,需要设置一下File => Settings... => Inspections => Serialization issues => Serializable class without 'serialVersionUID',在实现Serializable接口时工具会自动生成serialVersionUID。
public class BeanForSerilizable implements Serializable { private static final long serialVersionUID = -603615282089288443L; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
实现起来比较简单。
Parcelable:
public class BeanForParcelable implements Parcelable { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } public static final Parcelable.Creator<BeanForParcelable> CREATOR = new Creator<BeanForParcelable>() { @Override public BeanForParcelable[] newArray(int size) { return new BeanForParcelable[size]; } @Override public BeanForParcelable createFromParcel(Parcel in) { return new BeanForParcelable(in); } }; public BeanForParcelable(Parcel in) { name = in.readString(); age = in.readInt(); }
}