Intent传递对象——Serializable和Parcelable差别
前两篇文章讨论了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差别的更多相关文章
- Intent传递对象——Serializable和Parcelable区别
为什么要将对象序列化? 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.用过序列化对象在网络中传递对象: 3.通过序列化对象在进程间传递对象. 1.实现Serializable接口 Seri ...
- Android 全局获取 Context 与使用 Intent 传递对象
=====================全局获取 Context======================== Android 开发中很多地方需要用到 Context,比如弹出 Toast.启动活 ...
- Android开发——使用intent传递对象
intent传递对象有两种方法: 方式一:Serializable 方式 方式二:Parcelable方式 在这里不多介绍了,这一篇就是快速上手使用教程,至于详细原理介绍的,请看这一篇http://w ...
- Intent传递对象的几种方式
原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/51105060 李济洲的博客 Intent的使用方法相信你已经比較熟悉了,Inte ...
- android#使用Intent传递对象
参考自<第一行代码>——郭霖 Intent的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播.启动服务等.在进行上述操作的时候,我们还可以在Intent中添加一些附加数据,以达 ...
- 怎样使用Intent传递对象
怎样使用Intent传递对象 我们能够使用Intent来启动Activity.开启服务Service,发送广播Broadcast,然后使用Intent传递主要的数据类型,如:布尔值,整型,字符串等 I ...
- 关于intent传递对象后是传递的对象的地址还是对象的拷贝?
var intent = Intent(activity,SingleColorControlActivity::class.java); var bundle = Bundle()// bundle ...
- Intent传递对象的两种方法(Serializable,Parcelable) (转)
今天讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcela ...
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...
随机推荐
- vue 事件上加阻止冒泡 阻止默认事件
重点 vue事件修饰符 <!-- 阻止单击事件冒泡 --> <a v-on:click.stop="doThis"></a> <!-- 提 ...
- centos7 命令
firewall-cmd --zone=public --add-port=80/tcp --permanent 开启端口 systemctl stop firewalld.service 关闭服务 ...
- C语言手册-read
名称: pread,read-从文件读 语法: #include <unistd.h> ssize_t pread(int fildes, void *buf, size_t nbyte, ...
- Linux 重启防火墙失败
CentOS 7 执行service iptables start出现redirecting to systemctl ...Failed to ...not loaded. 如果出现以下错误,好像说 ...
- red hat linux之Samba、DHCP、DNS、FTP、Web的安装与配置
本教程是在red hat linux 6.0环境下简单测试!教程没有图片演示,需要具有一定Linux基础知识,很多地方的配置需要根据自己的情况修改,照打不一定可以配置成功.(其他不足后续修改添加) y ...
- jsp页面跳转的路径问题
<form class="box login" action="/graduation_system/BServlet" method="pos ...
- 我有一个idea,但是没有钱,又没技术怎么办?
我想你还少讲一件事,就是同时如果你也没什么明确的商业计划,恭喜,那你有机会成为马云第二,因为他曾说过自己的成功要素就是「没钱」.「不懂技术」.「没有计划」,要是这么刚好让你从事互联网产业,我看不出三年 ...
- IDEA无法启动:Failed to create JVM:error code -4
发生该错误的原因是由于IDEA须要使用的连续内存空间没有得到满足,解决方式: 1.减小-Xmx和-XX:PermSize的值 切换到IDE_HOME\bin\文件夹下,找到<produc ...
- python Flask 学前班
0.Flask简单介绍 Flask是一个用Python编写的轻量级的Web应用框架.本文第一部分将简单解说Flask的安装,接着展示一个Flask的样例,第一个样例非常easy但也存在缺陷-- ...
- rtmutex赏析
[摘要] rtmutex作为futex的底层实现,有两个比較重要的特性.一个是优先级继承,一个是死锁检測.本文对这两个特性的实现进行说明. 一.优先级继承 2007年火星探路者号的vxworks上发生 ...