Android数据序列化笔记

参考资料:android高阶进阶

什么是序列化

序列化是将数据结构或者对象转变成可以存储或者通信传输的数据格式的过程。在序列化的过程中数据结构或者对象将自身的信息存在临时或者永久的存储中。反序列化的过程是从存储中将这些信息还原成数据或者对象。

使用Serializable接口进行序列化

将java对象转换成字节序列的过程,只要实现了seriailizable接口的类,不用实现其他方法,java便会对该对象进行序列化。它的序列化过程比较慢,使用反射的机制,容易生成许多临时对象。使用它序列化时需要有一个serialVersionUID进行序列化和反序列化的标识。如果接受者和发送者拿到的id不一致,会发生invalidClassException错误。serialVersionUID最好使用编辑器生成(在Preference中直接搜索Serialization issues,将Serializable class without 'serialVersionUID'勾选上,选中实现类,按下alt+enter)。

34FAC50B-F8F1-461B-9C17-A5D899F3B9B0.png

使用android提供的Parcelable

它是基于内存的一种序列化方式。速度更快。
安装android parcelable plugin插件。自动生成parcelable代码。使用alt+enter

2E81A4F1-4282-4093-B50E-1DA30B7C8396.png

SharePreferences

android平台提供的一个轻量级存储的api,信息以xml的方式存储于/data/data/PACKAGE_NAME/shared_prefs目录中。一旦手机root可以被轻松访问到。解决该问题可以使用

facebook : conceal进行加密
直接使用share的安全封装类secure-preferences:github上

Protocol Buffers 及Nano-proto-Buffers

google设计的轻量级高效的序列化数据存储格式。类似xml。适合做数据存储,和rpc数据交换格式。手机端使用nano-proto-buffers。

http://codecloud.net/15081.html

FlatBuffers

跨平台,高效的序列化函数库。提供对c++,c的只是。更适合移动设备。没有打包拆包的过程。存储在缓存中。内存占用小。

https://gold.xitu.io/entry/56cd8fff75c4cd339a03d1a4

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容