——Parcelable接口的使用(跨进程,Intent传输)

Posted 技术丶从积累开始

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了——Parcelable接口的使用(跨进程,Intent传输)相关的知识,希望对你有一定的参考价值。

一、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;    
    }
} 
View Code

 

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

describeContents():返回当前对象的描素内容,如果含有文件描述符(什么叫文件描述符)则返回1,否则返回0,一般都返回0(所以不用考虑咯)。

writeToParcel(Parcel out,int flags):将对象写入序列化

                                                  Parcel out :系统提供的输出流,将成员变量存储到内存中。

                                                  int flags:0或1,1表示当前对象需要作为返回值保存(不明白),基本上所有情况都为0,(所以说可以不用考虑咯)

//接上面的代码
   @Override     
   public int describeContents() { 
         return 0;     
   }//描述文件,现在只要返回0就行

    @Override     
    public void writeToParcel(Parcel dest, int flags) {    
         dest.writeInt(mBookId);
         dest.writeString(mBookName);
    }//将当前对象写入序列化结构

 

步骤三:创建反序列化对象 Parcelable.Creator<T>接口:专门用于反序列化

重写该接口的方法:

createFromParcel(Parcel in):系统提供的输入流,从序列化的对象获取数据。

newArray(int size):创建该对象的数组  (暂时感觉没用)

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

//一定需要按照这种格式书写 public static final Parcelable.Creator<Book>  CREATOR
  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[0];
         }
 };

//创建构造方法,实例化对象
 private Book (Parcel in){
      mBookId = in.readInt();
      mBookName = in.readString();
 }

 

3.原理

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

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

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

以上是关于——Parcelable接口的使用(跨进程,Intent传输)的主要内容,如果未能解决你的问题,请参考以下文章

Android跨进程传大图思考及实现——附上原理分析

Android Studio中如何创建AIDL

Android面试Android跨进程通信IPC

Parcelable与Serializable的比较

第二章——Serializable的使用(跨进程使用和Intent的传递)

Android之AIDL知识总结