首页 > 其他分享 >Serialzable和Parcelable的区别?Bunder传递对象为什么需要序列化?

Serialzable和Parcelable的区别?Bunder传递对象为什么需要序列化?

时间:2022-10-29 19:38:37浏览次数:98  
标签:Serialzable Bunder 对象 Parcelable 传输 Intent 序列化 Serializable


1 Bunder传递对象为什么需要序列化?

因为bundle传递数据时只支持基本数据类型,所以在传递对象时需要序列化转换成可存储或可传输的本质状态(字节流)。

序列化后的对象可以在网络、IPC(比如启动另一个进程的Activity、Service和Reciver)之间进行传输,也可以存储到本地。

2 Serialzable和Parcelable的区别?

Serializable和Parcelable接口可以完成对象的序列化的过程,当我们需要通过Intent和Binder传输数据时就需要使用Parcelable或者Serializable,有时候我们还需要把对象持久化到存储设备上或者通过网络传输给其他客户端,这个时候也需要使用Seriazable来完成对象的持久化.

2.1 基本区别
  • Serializable是属于 Java 自带的,表示一个对象可以转换成可存储或者可传输的状态,序列化后的对象可以在网络上进行传输,也可以存储到本地。
  • Parcelable 是属于 Android 专用。不过不同于Serializable,Parcelable实现的原理是将一个完整的对象进行分解。而分解后的每一部分都是Intent所支持的数据类型。
2.2 本质的区别
  • Serializable的本质是使用了反射,序列化的过程比较慢,这种机制在序列化的时候会创建很多临时的对象,比引起频繁的GC、
  • Parcelable方式的本质是将一个完整的对象进行分解,而分解后的每一部分都是Intent所支持的类型,这样就实现了传递对象的功能了。
2.3 应用场景
  • 在 activity、service之间进行对象的传递,推荐使用Parcelable,因为Parcelable比Serializable性能高很多。因为Serializable在序列化的时候会产生大量的临时变量, 从而引起频繁的GC。
  • 如果是持久化操作,推荐Serializable,虽然Serializable效率比较低,但是还是要选择它,因为在外界有变化的情况下,Parcelable不能很好的保存数据的持续性。

完毕


标签:Serialzable,Bunder,对象,Parcelable,传输,Intent,序列化,Serializable
From: https://blog.51cto.com/928343994/5806443

相关文章

  • Java序列化和反序列化
    java序列化:java对象转换为字节序列过程,java反序列化把字节序列恢复为java对象的过程Serializable实现序列化Java中,只要一个类实现了java.io.Serializable接口,可以序列化......
  • [代码审计][ThinkPHP]Thinkphp3.2.3反序列化利用链分析
    文章目录​​Thinkphp3.2.3反序列化利用链分析​​​​分析​​​​利用链​​菜鸡在做CTF的时候想深入分析一下,也就产生了这篇文章Thinkphp3.2.3反序列化利用链分析分析首......
  • Fastjson反序列化解析流程分析(以TemplatesImpl加载字节码过程为例)
    文章目录​​写在前面​​​​流程分析​​写在前面关于TemplatesImpl加载字节码就不多说了,之前也写过自己翻一翻,或者网上看看其他大佬的,至于为什么选择这一个,因为这里面大......
  • PHP反序列化漏洞总结
    文章目录一、基础知识1、什么是反序列化漏洞:序列化与反序列化:1、序列化:2、反序列化:二、PHP魔法函数1、常见方法:2、安全问题:三、CTF中的反序列化例题一:例题二:四、靶场练......
  • ctfshow反序列化 刷题随笔
    刷题随笔web254题目直接传参,没啥好说的web255题目<?phperror_reporting(0);highlight_file(__FILE__);include('flag.php');classctfShowUser{public$......
  • .Net内置JSON序列化中文问题
    今天在用System.Text.Json序列化的时候遇到了中文序列化的一个问题,示例如下:JsonSerializer.Serialize(new{Name="你好"});预期结果是:{"Name":"你好"},但得到结果如下......
  • Flutter(九)Json序列化与反序列化(转Model)
    在日常开发中JSON的序列化与反序列化是一个常见的操作;而Dart语言不支持反射,运行时反射会影响Dart的treeshaking(摇树优化),treeshaking可以“抖掉”不需要使用的代码,显著......
  • java反序列化漏洞cc_link_one
    CC-LINK-one前言这里也正式进入的java的反序列化漏洞了,简单介绍一下CC是什么借用一些官方的解释:ApacheCommons是Apache软件基金会的项目,曾经隶属于Jakarta项目。Commons......
  • 剑指 Offer 37. 序列化二叉树 - 力扣(LeetCode)
    剑指Offer37.序列化二叉树-力扣(LeetCode)题目大意:将一棵二叉树序列化成字符串,然后通过该字符串可以重新构造出二叉树思路:看到将二叉树转化成字符串,首先想到的......
  • xml 反序列化处理
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net;usingSystem.IO;usingSystem.Collections.Specialized;......