码迷,mamicode.com
首页 > 其他好文 > 详细

Intent传递对象——Serializable和Parcelable区别

时间:2015-06-07 11:08:39      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:android   parcelable   serializable   

前两篇文章讨论了Serializable和Parcelable实现Intent之间传递对象和对象数组的方式,两种方法实现上相似,效果一致,怎么选择用哪种方法实现呢?

Intent在不同的组件中传递对象数据的应用非常普遍。下面介绍两种通过Intent传递对象的方法。

1、实现Serializable接口

2、实现Parcelable接口

 

为什么要将对象序列化?

 1、永久性保存对象,保存对象的字节序列到本地文件中;

 2、用过序列化对象在网络中传递对象;

 3、通过序列化对象在进程间传递对象。

 

1、实现Serializable接口

    Serializable的作用是将数据对象存入字节流当中,在需要时重新生成对象,主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。

    implements Serializable接口的的作用就是给对象打了一个标记,系统会自动将其序列化。

2、实现Parcelable接口

     1)为什么要实现Parfcelable接口来实现在Intent中传递对象?

      a、在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable类。

      b、Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。

 注意:Parcelable不能使用在将数据存储在磁盘上的情况,因为Parcelable不能很好的保存数据的持续性在外界有变化的情况下。因此在这种情况下,建议使用Serializable

    2) Android中的新的序列化机制

     在Android系统中,针对内存受限的移动设备,因此对性能要求更高,Android系统采用了新的IPC(进程间通信)机制,要求使用性能更出色的对象传输方式。因此Parcel类被设计出来,其定位就是轻量级的高效的对象序列化和反序列化机制。

     Parcel的序列化和反序列化的读写全是在内存中进行,所以效率比JAVA序列化中使用外部存储器会高很多。

 

Parcel类

     就应用程序而言,在常使用Parcel类的场景就是在Activity间传递数据。在Activity间使用Intent传递数据的时候,可以通过Parcelable机制传递复杂的对象。

     Parcel机制:本质上把它当成一个Serialize就可以了。只是Parcel的对象实在内存中完成的序列化和反序列化,利用的是连续的内存空间,因此更加高效。

喜欢的朋友点个赞,关注一下!谢谢技术分享

Intent传递对象——Serializable和Parcelable区别

标签:android   parcelable   serializable   

原文地址:http://blog.csdn.net/yayun0516/article/details/46398621

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!