-
Notifications
You must be signed in to change notification settings - Fork 768
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-04-03:Serializable和Parcelable的区别? #19
Comments
都是安卓常用到的序列化对象,Parcelable要手动写构造函数和writeToParcel,不过现在as都是自动生成的,Serializable是声明一下接口就行了。Parcelable比Serializable性能强,Serializable在使用是会产生大量临时变量,增加GC回收频率。但是Serializable的数据是以IO流在磁盘,而Parcelable是写在内存,所以Parcelable无法将数据更好的持久化。 |
Serializable是属于Java自带的,本质是使用了反射。序列化的过程比较慢,这种机制在序列化的时候会创建很多临时的对象,比引起频繁的GC。Parcelable 是属于 Android 专用。不过不同于Serializable,Parcelable实现的原理是将一个完整的对象进行分解。而分解后的每一部分都是Intent所支持的数据类型。 如果在内存中使用建议Parcelable。持久化操作建议Serializable |
Android中序列化有两种方式:Serializable以及Parcelable。其中Serializable是Java自带的,而Parcelable是安卓专有的。 |
今天人好多 |
1.. Parcelable 的读写顺序必须一致, 为什么要这样呢?
因为 Binder 本身就是为了进程间频繁-灵活的通信所设计的, 并不是为了拷贝大量数据; |
两者最大的区别在于 存储媒介的不同,Serializable 使用 I/O 读写存储在硬盘上,而 Parcelable 是直接 在内存中读写。很明显,内存的读写速度通常大于 IO 读写,所以在 Android 中传递数据优先选择 Parcelable。 |
Seralizable要注意添加一个static final的serialVersionUID,注意静态变量属于类,不属于对象,所以不会参与序列化,用transient关键字标记的成员变量不会参与序列化。 |
Serializable和Parcelable的区别?提到这两个,就应该说一些序列化:将对象转化成可以传输的二进制流的过程,这样就可以将转化后的数据进行网络传输或者保存到本地流去,这是一种便于数据传输的方法; 反序列化就是二进制流转成对象的过程
是Java语言为我们提供的一个标准化的序列化接口,会有频繁IO操作,消耗资源大,但是实现方式简单;
是Android专有的序列化接口;效率高,但是实现稍微复杂; 两者的选用规则大概可以分为: 内存序列化上选择Pracelable 存储到设备或网络传输选择serializable(用parcelable也可以,但稍微复杂) |
serializable 由java提供序列化于硬盘中 实现简单 效果低 |
Serializable只是标记了可以序列化,被标记的类之后可用于存到磁盘中和网络传输 |
这是来自QQ邮箱的假期自动回复邮件。
|
No description provided.
The text was updated successfully, but these errors were encountered: