zoukankan      html  css  js  c++  java
  • 第二章——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传输就可以了。

  • 相关阅读:
    CCF模拟题 窗口
    CSUOJ 1541 There is No Alternative
    MySQL数据库优化的八种方式(经典必看)
    PHP面向对象-----魔术方法
    PHP面向对象(OOP)----分页类
    2017最新PHP初级经典面试题目汇总(下篇)
    2017最新PHP经典面试题目汇总(上篇)
    原型模式
    适配器模式
    策略模式
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5351944.html
Copyright © 2011-2022 走看看