一、Parcelable类(Android独有的)

简介:Parcelable是一个接口。
作用:是Android提供的序列化接口,实现序列化和反序列化的操作。

二、跨进程使用

步骤一:创建Book类继承Parcelable接口

public class Book implements Parcelable {    private String mBookName;       private int mBookId; /**    *准备:创建Book类,并继承Parcelable接口 */    public Book(int bookId, String bookName) {                 mBookId = bookId;                 mBookName = bookName;         }    @Override         public String toString() {         return mBookId+""+mBookName;        }} 

步骤二:会提示必须重写接口的方法

  • describeContents():返回当前对象的描素内容,如果含有文件描述符(什么叫文件描述符)则返回1,否则返回0,一般都返回0(所以不用考虑咯)。
  • writeToParcel(Parcel dest,int flags):将对象写入序列化
    Parcel dest :系统提供的输出流,将成员变量存储到内存中。
    int flags:0或1,1表示当前对象需要作为返回值保存(不明白),基本上所有情况都为0,(所以说可以不用考虑咯)
  • readFromParcel(Parcel reply):从序列化中读出
//接上面的代码   @Override        public int describeContents() {          return 0;        }//描述文件,现在只要返回0就行    @Override         public void writeToParcel(Parcel dest, int flags) {             dest.writeInt(mBookId);         dest.writeString(mBookName);    }//将当前对象写入序列化结构

这里有一点要提醒大家的是 AndroidStudio 中,我们通过插件会自动帮我们生成 writeToParcel 方法及 CREATOR,通常 readFromParcel 方法是不会自动生成的,需要我们自己手动编写,不然会编译不过。

public void readFromParcel(Parcel reply) {       mBookId = in.readInt();       mBookName = in.readString(); }

看 writeToParcel 和 readFromParcel 方法,需要注意的是 writeToParcel 和 readFromParcel 方法读写的顺序是一一对应的。

步骤三:创建反序列化对象 Parcelable.Creator接口:专门用于反序列化
重写该接口的方法:

  • createFromParcel(Parcel in):系统提供的输入流,从序列化的对象获取数据。
  • newArray(int size):创建该对象的数组 (暂时感觉没用)

注:反序列化的时候,要按照序列化放入数据的顺序获取数据,否则会收不着值。

//一定需要按照这种格式书写 public static final Parcelable.Creator  CREATOR  public static final Parcelable.Creator  CREATOR  = new  Parcelable.Creator(){        @Override         public Book createFromParcel(Parcel in) {             return new Book(in);         }//获取输入流,反序列化对象        @Override         public Book[] newArray(int size) {             return new Book[0];         } };//创建构造方法,实例化对象 private Book (Parcel in){      mBookId = in.readInt();      mBookName = in.readString(); }

原理:
Parcelable利用Parcel out 将数据存储到内存中,然后通过Parcel in 从内存中获取数据。

三、Intent之间传递Parcelable类(就是各个Activity传递对象的方法)

根据上面创建Parcelable的方式,创建该类,然后应用Intent传输就可以了。

感谢:
第二章——Parcelable接口的使用(跨进程,Intent传输)
可查看Parcelable在aidl中的应用
AIDL 传递对象(Parceable)、传递接口

更多相关文章

  1. Android(安卓)自定义布局Dialog,解决版本不兼容问题
  2. android中DatePicker和TimePicker的使用方法详解
  3. android下使用adb启动程序或者服务
  4. 高焕堂讲解之 Intent-based Programming
  5. Android(安卓)复习_Service 二
  6. android错误:The method makeText(Context, CharSequence, int) i
  7. Android中不用Service跨Avtivity仍然可以播放音乐的一个简单方法
  8. Android: bitmap size exceeds VM budget holder
  9. Android(安卓)学习笔记之二 Netspeed

随机推荐

  1. 在Android中把内容写到XML文件中
  2. Android(安卓)SurfaceView使用示例(二)
  3. android隐藏标题栏和状态
  4. Android(安卓)下使用wpa_cli 连接 wifi
  5. Android之键盘点击事件
  6. android点滴3
  7. Android(安卓)模拟按键
  8. Unity打包Android提示找不到jdk解决方案
  9. Android得到视频缩略图
  10. android 弹出提示框