Android开发--Serialiable 和 Parcelable的区别
2015-09-13 22:39
330 查看
转自:/article/1337160.html
android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable。
一 序列化原因:
1.永久性保存对象,保存对象的字节序列到本地文件中;
2.通过序列化对象在网络中传递对象;
3.通过序列化在进程间传递对象。
二 至于选取哪种可参考下面的原则:
1.在使用内存的时候,Parcelable 类比Serializable性能高,所以推荐使用Parcelable类。
2.Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
3.Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点, 也不提倡用,但在这种情况下,还是建议各位可以用Serializable 。
Serializable 的实现,只需要继承 implements Serializable 即可。这只是给对象打了一个标记,系统会自动将其序列化。
Parcelable的实现需要以下步骤
(1)describeContents方法。内容接口描述,默认返回0就可以;
(2)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.即打包需要传递的数据到Parcel容器保存,以便从parcel容器获取数据,该方法声明如下:
writeToParcel (Parcel dest, int flags)
(3)创建相应函数的构造方法
(4)静态的Parcelable.Creator接口,本接口有两个方法:
createFromParcel(Parcel in) 从Parcel容器中读取传递数据值,封装成Parcelable对象返回逻辑层。
newArray(int size) return new T[size])
android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable。
一 序列化原因:
1.永久性保存对象,保存对象的字节序列到本地文件中;
2.通过序列化对象在网络中传递对象;
3.通过序列化在进程间传递对象。
二 至于选取哪种可参考下面的原则:
1.在使用内存的时候,Parcelable 类比Serializable性能高,所以推荐使用Parcelable类。
2.Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
3.Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点, 也不提倡用,但在这种情况下,还是建议各位可以用Serializable 。
Serializable 的实现,只需要继承 implements Serializable 即可。这只是给对象打了一个标记,系统会自动将其序列化。
Parcelable的实现需要以下步骤
(1)describeContents方法。内容接口描述,默认返回0就可以;
(2)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.即打包需要传递的数据到Parcel容器保存,以便从parcel容器获取数据,该方法声明如下:
writeToParcel (Parcel dest, int flags)
(3)创建相应函数的构造方法
(4)静态的Parcelable.Creator接口,本接口有两个方法:
createFromParcel(Parcel in) 从Parcel容器中读取传递数据值,封装成Parcelable对象返回逻辑层。
newArray(int size) return new T[size])
相关文章推荐
- java4Android(20):类集框架->Set/Map/List->ArrayList简单实例
- Android的sax解析xml
- Android NDK开发 在eclipse中添加C方法代码提示
- Android应用的安全开发
- 在android中执行 命令mount
- Android引导页控件 补充
- 自定义 View 3d翻转动画 android
- android入门(八) 状态栏通知(消息推送) Notification
- Android:对ListView原理的理解
- Android NFC 近场通讯开发全解
- android 自定义进度条
- Android--Service+Messenger(信使)-实现不同应用程序间的通信
- Android应用的界面编程——View类
- Android 遍历全国地区位置(一)
- 多线程在Android中的应用以及线程间的通信
- Android(java)学习笔记245:ContentProvider使用(银行数据库创建和增删改查的案例)
- Android学习笔记(十四)
- 兔子--android:ems="3"是什么意思
- 兔子--android:gravity与android:layout_gravity的区别
- Android实战简易教程-第五十八枪(AlarmManager类用法研究小实例)