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传输就可以了。

  • 相关阅读:
    Go语言中的管道(Channel)总结
    Go语言的构建方法总结
    Java里的equals总结
    Cracking the coding interview 第二章问题及解答
    2014年度总结
    一种识别验证码方法的介绍
    由记忆的角度分析我们学习为什么要知其所以然
    pvlan 配置
    f5 数据转发分析
    elasticsearch logstash kibana 研究第一篇
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5351944.html
Copyright © 2011-2022 走看看