首页 > 其他分享 >Intent传递对象——Serializable和Parcelable区别

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

时间:2022-11-11 14:34:46浏览次数:54  
标签:Parcel 对象 Parcelable Intent 序列化 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的对象实在内存中完成的序列化和反序列化,利用的是连续的内存空间,因此更加高效。

喜欢的朋友点个赞,关注一下!谢谢

标签:Parcel,对象,Parcelable,Intent,序列化,Serializable
From: https://blog.51cto.com/u_15866446/5844853

相关文章

  • intent跳转时添加动画效果实例
    系统默认的intent跳转效果非常生硬,丑陋,影响用户体验,怎么添加跳转动画呢?首先新建两个动画文件:zoomin.xml:<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="htt......
  • 【Javaweb】implements Serializable是什么意思?反序列化是什么意思?
    为了保证数据传输的可靠性,常常要implementsSerializable,为什么?对象本质上是虚无缥缈的,只是内存中的一个地址,如果想要让对象持久化,让对象在网络上传输,总不可能传送一个内......
  • Serializable
    Serializable/**Copyright(c)1996,2013,Oracleand/oritsaffiliates.Allrightsreserved.*ORACLEPROPRIETARY/CONFIDENTIAL.Useissubjecttolicense......
  • android-Service_Intent_must_be_explicit的解决方法
    android:ServiceIntentmustbeexplicit的解决方法在使用AIDL隐式开启一个服务的时候,可能会遇到这个错误IllegalArgumentException:ServiceIntentmustbeexplici......
  • Java实现 Serializable 序列化
    深度理解Java实现Serializable序列化概念把对象转换为直接序列的过程叫对象的序列化把字节序列恢复为对象的过程叫对象的反序列化用途对象持久化跨网络数据交换,远程过程调......
  • Serialzable和Parcelable的区别?Bunder传递对象为什么需要序列化?
    1Bunder传递对象为什么需要序列化?因为bundle传递数据时只支持基本数据类型,所以在传递对象时需要序列化转换成可存储或可传输的本质状态(字节流)。序列化后的对象可以在网络、......
  • Java 中那些绕不开的内置接口 -- Serializable
    上一部分我们着重讲了Java集合框架中在开发项目时经常会被用到的数据容器,在讲解、演示使用实践的同时,把这个过程中遇到的各种相关知识点:泛型、​​Lambada​​​、​​Str......
  • XML Serializable Generic Dictionary
       .net2.0泛型Dictionary不支持XMLserializable. 下面是一个实现IXmlSerializable接口实现支持Serialize的泛型集合.Dictionary 。Dictionary<TKey,TValue>......
  • 安卓中实现异步任务(5)——使用IntentService实现
    安卓中实现异步任务(5)——使用IntentService实现问题背景上篇文章大致介绍了几种安卓汇总实现异步任务的方法,讲得比较简要,有朋友问到具体的实现方式,现在开始分列几篇文章详......
  • implements Serializable
    一开始看ssm代码的时候,看到publicclassAccountimplementsSerializable{这个,不知道这个接口是干嘛的后来去了解了一下,发现...其实没什么卵用,hhhSerializable是......