第二章——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;
}
}
步骤二:会提示必须重写接口的方法
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传输就可以了。
第二章——Parcelable接口的使用(跨进程,Intent传输)的更多相关文章
- 第二章 使用接口(Using Interfaces)-书籍翻译
PDF预览 下载地址 http://files.cnblogs.com/DKSoft/CodingInDelphi.pdf 1.1. 解耦(Decoupling) All through this b ...
- Android开发艺术探索——第二章:IPC机制(中)
Android开发艺术探索--第二章:IPC机制(中) 好的,我们继续来了解IPC机制,在上篇我们可能就是把理论的知识写完了,然后现在基本上是可以实战了. 一.Android中的IPC方式 本节我们开 ...
- Android开发当中Parcelable接口的使用
本文转载于:http://www.2cto.com/kf/201205/132814.html 本文稍微做了些修改 android提供了一种新的类型:Parcel.本类被用作封装数据的容器,封装后的数 ...
- 第二章——Serializable的使用(跨进程使用和Intent的传递对象)
一.Serializable类(JAVA本身具有的) 简介:Serializable是一个接口. 作用:是JAVA提供的序列化接口,实现序列化和反序列化的操作. 二.跨进程使用 1.事前准备 publ ...
- Service官方教程(11)Bound Service示例之2-AIDL 定义跨进程接口并通信
Android Interface Definition Language (AIDL) 1.In this document Defining an AIDL Interface Create th ...
- MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- Android开发艺术探索——第二章:IPC机制(上)
Android开发艺术探索--第二章:IPC机制(上) 本章主要讲解Android的IPC机制,首先介绍Android中的多进程概念以及多进程开发模式中常见的注意事项,接着介绍Android中的序列化 ...
- [转]Windows Shell 编程 第二章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987893】
第二章Shell的结构 “Shell 编程”的大伞之下有大量的API函数和COM接口.这个种类繁多的‘命令’集允许你用不同的方法对Windows Shell进行编程.函数和接口并不是两种提供相同功能 ...
- Android艺术开发探索——第二章:IPC机制(下)
Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvi ...
随机推荐
- 初识ege图形库
简介: EGE (Easy Graphics Engine),是Windows 下的简易绘图库, 是一个类似BGI (graphics.h)的 面向C/C++语言新手的图形库,对新手来说,简单,友好, ...
- C++ primer学习记录(个人猜想未测试版本)
学习版本:第五版. 本博文主要记录个人曾经并不知晓知识细节. 因为linux下的编译环境还未进行学习.所以实际代码测试将在今后完成. 红色:需确认. 蓝色:重点. 1)const对象设定为仅在文件内有 ...
- Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的用于开发动态web资源的技术.Sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏览器 ...
- javascript 操作元素属性的方法
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Python爬虫实战(4):豆瓣小组话题数据采集—动态网页
1, 引言 注释:上一篇<Python爬虫实战(3):安居客房产经纪人信息采集>,访问的网页是静态网页,有朋友模仿那个实战来采集动态加载豆瓣小组的网页,结果不成功.本篇是针对动态网页的数据 ...
- UIView添加事件
UIView *loadView = [[UIControl alloc]initWithFrame:CGRectMake(0,0,320,480)]; loadView.backgroundColo ...
- C语言 EOF是什么?
Linux中,在新的一行的开头,按下Ctrl-D,就代表EOF(如果在一行的中间按下Ctrl-D,则表示输出"标准输入"的缓存区,所以这时必须按两次Ctrl-D):Windows中 ...
- gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
摘自http://blog.csdn.net/elfprincexu/article/details/45043971 gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解 C和C+ ...
- WordPress中文汉字username不能注冊怎么办?
WordPress注冊用户是不支持中文的.可是近期在项目中须要用到中文注冊. 后来想到了简单的处理办法: 打开 wp-includes/formatting.php.找到 function sanit ...
- css 中文字体 unicode 对照表
css 中文字体可以用 unicode 格式来表示,比如“宋体”可以用 \5B8B\4F53 来表示.具体参考下表: 中文名 英文名 unicode 宋体 SimSun \5B8B\4F53 黑体 S ...