Android序列化方式的选择

当使用对象在进程间传输数据时,我们需要对对象进行序列化,Java中提供了Serializable接口,而Android SDK提供了Parcelable接口
public class User implements Serializable
或者
public class User implements Parcelable

究竟如何选择呢?为什么Android要提供专门的序列化方式?

Serializable的作用是将数据对象存入字节流当中,在需要时重新生成对象,主要应用是利用外部存储设备保存对象状态,以便网络传输等。

针对Android这种内存受限的移动设备,对于性能要求更高,特别是Android IPC机制的实现上,要求一种更快的数据传输方式。所以,Parcel类被提上来,就是为了在Android中进行更为高效的序列化和操作,所以在内存间进行数据传输时推荐使用Parcelable,例如Activity间的数据传输。

关于Parcelable的实现方式举例:
public class Book implements Parcelable {
 
 public int bookId;
 public String bookName;
 
 public Book(int bookId, String bookName) {
  super();
  this.bookId = bookId;
  this.bookName = bookName;
 }

 @Override
 public int describeContents() {
  return 0;
 }

 @Override
 public void writeToParcel(Parcel out, int flags) {
  out.writeInt(bookId);
  out.writeString(bookName);
 }
 
 public static final Parcelable.Creator<Book> CREATOR = new Parcelable.Creator<Book>() {

  @Override
  public Book createFromParcel(Parcel source) {
   return new Book(source);
  }

  @Override
  public Book[] newArray(int size) {
   return new Book[size];
  }
 };
 
 private Book(Parcel source) {
  bookId = source.readInt();
  bookName = source.readString();
 }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值