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

最新文章

  1. 十大开源的.NET用户界面框架 让GUI设计不再犯难
  2. ZOJ3201 Tree of Tree(树形DP)
  3. Ubuntu中设置静态IP和DNS
  4. ABBYY如何使用电子邮件发送OCR结果
  5. 检测网页地址有效性java代码
  6. oracle中merge的详解
  7. 【linux】Ubuntu 14.04 smba服务器的配置
  8. Unity Camera属性
  9. IOS--UISwitch的使用方法
  10. Android 用 camera2 API 自定义相机
  11. 软件测试第二周作业 WordCount
  12. v-for 在 VSCode 中出现 Elements in iteration expect to have &#39;v-bind:key&#39; directives.
  13. JSON错误
  14. 工控随笔_16_西门子_S7-200.Smart软件安装兼容性说明和错误代码:error code hr=0x80070430
  15. json和jsonp的使用区别
  16. CF使用TGP下载后,分卷文件损坏的解决方法
  17. Python之字典的应用
  18. C# WPF 滚动字幕实现
  19. 邮件相关协议及JavaMail 包简介
  20. POJ 2785 4 Values whose Sum is 0 (二分)题解

热门文章

  1. html基础之 input:type
  2. 容器vector的使用总结 容器stack(栈)
  3. C#与SQLite数据库
  4. Hadoop配置文件-hdfs-site.xml
  5. js 打开新页面 window.open()
  6. Oracle EBS-SQL (PO-18):检查工作台下达的PR在系统找不到.sql
  7. 如何重载浏览器 onload 事件后加载的资源文件
  8. Chapter 5. Label and Entry Widgets 标签和输入部件
  9. Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
  10. linux之SQL语句简明教程---UPDATE DELETE FROM