第二章——Parcelable接口的使用(跨进程,Intent传输)
2024-10-14 03:53:15
一、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传输就可以了。
最新文章
- 十大开源的.NET用户界面框架 让GUI设计不再犯难
- ZOJ3201 Tree of Tree(树形DP)
- Ubuntu中设置静态IP和DNS
- ABBYY如何使用电子邮件发送OCR结果
- 检测网页地址有效性java代码
- oracle中merge的详解
- 【linux】Ubuntu 14.04 smba服务器的配置
- Unity Camera属性
- IOS--UISwitch的使用方法
- Android 用 camera2 API 自定义相机
- 软件测试第二周作业 WordCount
- v-for 在 VSCode 中出现 Elements in iteration expect to have &#39;v-bind:key&#39; directives.
- JSON错误
- 工控随笔_16_西门子_S7-200.Smart软件安装兼容性说明和错误代码:error code hr=0x80070430
- json和jsonp的使用区别
- CF使用TGP下载后,分卷文件损坏的解决方法
- Python之字典的应用
- C# WPF 滚动字幕实现
- 邮件相关协议及JavaMail 包简介
- POJ 2785 4 Values whose Sum is 0 (二分)题解
热门文章
- html基础之 input:type
- 容器vector的使用总结 容器stack(栈)
- C#与SQLite数据库
- Hadoop配置文件-hdfs-site.xml
- js 打开新页面 window.open()
- Oracle EBS-SQL (PO-18):检查工作台下达的PR在系统找不到.sql
- 如何重载浏览器 onload 事件后加载的资源文件
- Chapter 5. Label and Entry Widgets 标签和输入部件
- Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
- linux之SQL语句简明教程---UPDATE DELETE FROM