前言
Android开发中在activity之间传输数据应该是经常碰到的,如整数,字符串等等。但是假如我们要传输一个类呢?
那就要用到序列化传输了,关于原理的讲解我就不献丑了大家可以参考这篇详细介绍Android中Parcelable的原理和使用方法
简单的讲就是把数据放到共享内存中,这样其他多个进程就都可以从这个内存中访问。
可能有人说为什么不用Serializable进行序列化?一个字快,Parcelable比Serializable快很多按照goole工程师的说法快10倍
序列化
public class ParcelableTest implements Parcelable{
private String name;
private String id;
private int num;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
}
}
假如我们要传输一个ParcelableTest类 首先我们要添加Parcelable接口并且添加接口要实现的方法
describeContents 和 writeToParcel方法
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.name);
dest.writeString(this.id);
dest.writeInt(this.num);
}
public ParcelableTest() {
}
protected ParcelableTest(Parcel in) {
this.name = in.readString();
this.id = in.readString();
this.num = in.readInt();
}
public static final Creator<ParcelableTest> CREATOR = new Creator<ParcelableTest>() {
@Override
public ParcelableTest createFromParcel(Parcel source) {
return new ParcelableTest(source);
}
@Override
public ParcelableTest[] newArray(int size) {
return new ParcelableTest[size];
}
};
重写这2个方法。好了这样类的序列化完成了。接下来在activity之间传输
MainActivity
ParcelableTest test=new ParcelableTest();
Bundle bundle=new Bundle();
bundle.putParcelable("testkey",test);
Intent intent=new Intent(MainActivity.this,Test.class);
intent.putExtras(bundle);
startActivity(intent);
Test
Intent intent=getIntent();
ParcelableTest parcelableTest=(ParcelableTest) intent.getParcelableExtra("testkey");
使用插件快速序列化
假如要传输的类属性很多怎么办或者你要序列化很多类怎么办,当然有办法,我们的前辈们早想到了这个问题。使用插件能够让我们快速序列化。
打开Android Studio
file->settings->Plugins->Browse repositroes..然后在搜索框子、中输入Parcelable
选择Android Parcelable code generator进行安装 安装完成后重启AS
在你要序列化的类中 快捷键 Alt+Insert 在弹出的Generator中选择Paecelable 然后选择所有属性就可以进行快速序列化了