最近做一个需要service和activity进程通信的应用,在传递对象时需要将对象序列化,这里选择的是Android自带的Parcelable类,还有一个序列化的类是jdk的Serializable,相比较而言后者较为简单只需要实现接口就行,但是Parcelable的效率更高,只不过不能在将数据存储在磁盘中时使用,因为不能保证数据的准确性。
用Parcelable序列化需要一系列步骤
1.继承Parcelable接口并实现两个方法describeContents(),writeToParcel()。.
2.实现带参数的构造方法,参数为Parcel类的对象。
2.定义一个静态方法creator并实现两个局部内部类。
代码如下:
public class Book implements Parcelable {
private String name;
private float price;
public Book(Parcel source) {
name=source.readString();
price=source.readFloat();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
@Override
public int describeContents() {
return 0;
}
/**
* 调用writeString方法时需要按照顺序来写
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeFloat(price);
}
public static final Parcelable.Creator<Book> CREATOR = new Creator<Book>() {
@Override
public Book[] newArray(int size) {
// TODO Auto-generated method stub
return new Book[size];
}
@Override
public Book createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new Book(source);
}
};
}