Android-IPC之二
来源:互联网 发布:微信网站怎么制作 知乎 编辑:程序博客网 时间:2024/05/02 01:13
注意:
静态成员变量属于类不属于对象
transient关键字标记的成员变量不参与序列化过程.
基础概念:
对象的序列化
Serializable
第一步 实现Serializable接口
第二步 声明一个seralVersionUID (不是必须的) 方便我们反序列化 如果反序列化失败了就要手动的设置一个这个值
Parcelable
同Serializable一样 都是实现序列化的方法 此方法可以通过Intent和Binder传递
/** * Created by Panda_Program on 2016/12/30 0030. */public class Person implements Parcelable { private String username; private String nickname; private int age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person(String username, String nickname, int age) { super(); this.username = username; this.nickname = nickname; this.age = age; } public Person() { super(); } /** * 这里默认返回0即可 */ @Override public int describeContents() { return 0; } /** * 把当前对象写入Parcel中 实现了序列化功能 */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(username); dest.writeString(nickname); dest.writeInt(age); } /** * 这里的读的顺序必须与writeToParcel(Parcel dest, int flags)方法中 * 写的顺序一致,否则数据会有差错,比如你的读取顺序如果是: * nickname = source.readString(); * username=source.readString(); * age = source.readInt(); * 即调换了username和nickname的读取顺序,那么你会发现你拿到的username是nickname的数据, * 而你拿到的nickname是username的数据 * @param source */ //从序列化后的对象中创建原始对象 public Person(Parcel source) { username = source.readString(); nickname=source.readString(); age = source.readInt(); }//反序列化 public static final Creator<Person> CREATOR = new Creator<Person>() { /** * 供外部类反序列化本类数组使用 */ @Override public Person[] newArray(int size) { return new Person[size]; } /** * 从Parcel中读取数据 */ @Override public Person createFromParcel(Parcel source) { return new Person(source); } };}系统为我们提供了许多实现了Parcelable接口的类都是可以直接序列化的,例如 Intent Bundle Bitmap List和Map(内部元素都必须是可序列化的)
两种序列化接口的区别:
Serializable 是Java中序列化接口
特点:使用简单 开销很大 需要大量的IO操作
Parcelable 是android的序列化方式
特点 效率高但是使用麻烦
0 0
- Android-IPC之二
- Android IPC 之 AIDL (二)
- Android中IPC机制之(二)
- Android中的IPC(二)
- Android camera系统开发之IPC (二)
- Android camera系统开发之IPC (二)
- Android camera系统开发之IPC (二)
- Android camera系统开发之IPC (二)
- Android开发艺术探索学习-IPC之Binder(二)
- Android camera系统开发之IPC (二)
- Android IPC之AIDL
- Android IPC之Messenger
- Android IPC 之Messenger
- Android IPC 之AIDL
- Android IPC之AIDL
- Android之IPC机制
- Android IPC之 Messager
- Android IPC 之 AIDL
- android sqlite数据库数据类型
- linux学习笔记--route命令
- wordpress数据字典
- MyBatis 逆向工程生产源码(po、mapper)
- 2016总结-学习-健康-坚持
- Android-IPC之二
- syntax error near unexpected token `newline'脚本无法执行
- Andorid完美退出应用
- 密码日记
- ORACLE下载当中的gateways,companion,clusterware都是什么用途?
- 1104. Sum of Number Segments (20)解题报告
- 利用Python替换文件中的字符串
- 自动化一步一步来之ant+ivy+jacoco+testNG+tomcat搭建
- Android 联系人模糊查询