Android知识Android开发经验谈首页投稿(暂停使用,暂停投稿)

三分钟弄懂Android&Parcelable&

2016-07-30  本文已影响629人  _ming_ming

为什么要序列化

public interface Parcelable { 
//内容描述接口,基本不用管 
public int describeContents(); 
//写入接口函数,打包 
public void writeToParcel(Parcel dest, int flags); 
//读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。
//因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入。
//为了能够实现模板参数的传入,这里定义Creator嵌入接口,内含两个接口函数分别返回单个和多个继承类实例 。
public interface Creator<T> { 
public T createFromParcel(Parcel source); 
public T[] newArray(int size); }
}

总结:

通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象。也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象,只不过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。

示例代码如下

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(); } 
}

End

上一篇 下一篇

猜你喜欢

热点阅读