android:--Serializable和Parcelable两种序列化
来源:互联网 发布:js方法传递对象参数 编辑:程序博客网 时间:2024/06/08 01:23
putExtra(String name, Parcelable value)//传递一个parcelable对象
putExtra(String name, Parcelable[] value) // 传递一个Parcelable数组
putExtra(String name, Bundle value) //传递一个Bundle对象
putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value) //传递一个实现Parcelable接口的对象数组
putStringArrayListExtra(String name, ArrayList<String> value) //传递一个字符串数组
putIntegerArrayListExtra(String name, ArrayList<Integer> value) //传递一个整形数组。
Integer这些装箱类型,Intent还实现了 putExtra(String name, int[] value) 这样的基础类型数组,同时Parcelable效率比标准的Java序列化更高,同时还被用作在AIDL中交换数据,所以掌握Parcelable这样的显示序列化技术,可以大幅提高数据交换性能。
1、作用
Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。
2、效率及选择
Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化
3、编程实现
对于Serializable,类只需要实现Serializable接口,并提供一个序列化版本id(serialVersionUID)即可。而Parcelable则需要实现writeToParcel、describeContents函数以及静态的CREATOR变量,实际上就是将如何打包和解包的工作自己来定义,而序列化的这些操作完全由底层实现。
Parcelable的一个实现例子如下
package com.jirrui.edu.entry;import android.os.Parcel;import android.os.Parcelable;public class Student implements Parcelable {private String stuno;private String name;public String getStuno() {return stuno;}public void setStuno(String stuno) {this.stuno = stuno;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel dest, int arg1) {dest.writeString(this.stuno);dest.writeString(this.name);}public static final Parcelable.Creator<Student> CREATOR=new Creator<Student>(){@Overridepublic Student createFromParcel(Parcel source) {Student stu=new Student();stu.setStuno(source.readString());stu.setName(source.readString());return stu;}@Overridepublic Student[] newArray(int arg0) {return new Student[arg0];}};}
- android:--Serializable和Parcelable两种序列化
- Android两种序列化serializable和parcelable
- Serializable 和 Parcelable 两种序列化
- Serializable 和 Parcelable 两种序列化
- 对象序列化的两种方式 Serializable和Parcelable
- Android 进阶6:两种序列化方式 Serializable 和 Parcelable
- android序列化 Parcelable和Serializable接口
- Android序列化:Serializable和Parcelable详解
- Android 序列化 Parcelable和Serializable 浅谈
- Android序列化Serializable和Parcelable区别
- Android序列化parcelable和 serializable分析
- Android序列化:Serializable和Parcelable
- Android中的Serializable和Parcelable序列化
- Android序列化-Serializable和Parcelable
- Android中的序列化Serializable和Parcelable
- Android序列化问题-Parcelable和Serializable
- Android对象序列化:Serializable和Parcelable
- Android序列化:Serializable和Parcelable
- windows下将程序io重定向到某端口
- TCP与UDP的比较
- Web 前端攻防(2014版)
- LeetCode 49 Binary Tree Zigzag Level Order Traversal
- UVM::全局的工具
- android:--Serializable和Parcelable两种序列化
- 陕西岐山特色面——素臊子酸汤面
- QT的信号与槽机制介绍
- 第一篇技术博客
- 常用编码软件简单使用记录 1 : 自主编码器
- 内省操作javabean的属性
- android--Adapter用法总结
- 系统io操作
- 自我分析-Spring IOC