第二章——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传输就可以了。

转载于:https://www.cnblogs.com/rookiechen/p/5351944.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值