Android在各个Activity之间传递List<MealItem>时,需要将MealItem序列化;

而在Android中序列化有两种方式:实现Serializable接口或者实现Parcelable接口,两者可以实现同样的目的,后者效率高但实现不如Serializable方便;

在Android中推荐后者

1. 实现Serializable接口

Serializable是JavaSE中自带的接口,实现起来很简单,只需要在实例类中implementsSerializable即可

<span style="font-size:14px;">public class MealItem implements Serializable{private String name;//菜品名称private String price;//菜品现价private int count;//预订数量public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}}</span>


2. 实现 Parcelable接口

Parcelable是Android中特有的接口,其效率高,因此在Android中被推荐

实现此接口需要实现两个方法以及一个CREATOR:

public int describeContents();

public void writeToParcel(Parcel dest, int flags);

public static final Parcelable.Creator<MealItem> CREATOR = new Creator<MealItem>() {
@Override
public MealItem createFromParcel(Parcel source);
@Override
public MealItem[] newArray(int size);
};

writeToParcel的顺序应该与CREATOR的createFromParcel保持一致

例子如下:可对比实现Serializable时的代码;

<span style="font-size:18px;">public class MealItem implements Parcelable {private String name;//菜品名称private String price;//菜品现价private int count;//预订数量public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(name);dest.writeString(price);dest.writeInt(count);}public static final Parcelable.Creator<MealItem> CREATOR = new Creator<MealItem>() {@Overridepublic MealItem createFromParcel(Parcel source) {MealItem mealItem = new MealItem();mealItem.setName(source.readString());mealItem.setPrice(source.readString());mealItem.setCount(source.readInt());return null;}@Overridepublic MealItem[] newArray(int size) {return new MealItem[size];}};}</span>



更多相关文章

  1. [置顶] Android高质量博客分类汇总及接口API
  2. Android: AIDL --- Android中的远程接口
  3. Android Camera的接口与架构介绍
  4. Android 设置默认锁屏壁纸接口
  5. (android 实战总结)android对html支持接口总结
  6. 第三部分:Android 应用程序接口指南---第一节:应用程序组件---第五
  7. Android 无线接口层RIL
  8. android对html支持接口总结
  9. Android 匿名共享内存Java接口分析

随机推荐

  1. Android(安卓)M 来了,和苹果iOS越来越像了
  2. Android文件(File)操作
  3. Android音频处理——通过AudioRecord去保
  4. 安装android studio报错Failed to instal
  5. ReactNative使用code-open热更新使用详解
  6. Activity 的介绍和使用(一)
  7. Activity详解一 配置、启动和关闭activit
  8. 关于Android网络传输加密的总结
  9. Android用SQLite存储数据详解
  10. 微软的 Steve Ballmer:「Android(安卓)就