参考资料:android高阶进阶
什么是序列化
序列化是将数据结构或者对象转变成可以存储或者通信传输的数据格式的过程。在序列化的过程中数据结构或者对象将自身的信息存在临时或者永久的存储中。反序列化的过程是从存储中将这些信息还原成数据或者对象。
使用Serializable接口进行序列化
将java对象转换成字节序列的过程,只要实现了seriailizable接口的类,不用实现其他方法,java便会对该对象进行序列化。它的序列化过程比较慢,使用反射的机制,容易生成许多临时对象。使用它序列化时需要有一个serialVersionUID进行序列化和反序列化的标识。如果接受者和发送者拿到的id不一致,会发生invalidClassException错误。serialVersionUID最好使用编辑器生成(在Preference中直接搜索Serialization issues,将Serializable class without 'serialVersionUID'勾选上,选中实现类,按下alt+enter)。
使用android提供的Parcelable
它是基于内存的一种序列化方式。速度更快。
安装android parcelable plugin插件。自动生成parcelable代码。使用alt+enter
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的只是。更适合移动设备。没有打包拆包的过程。存储在缓存中。内存占用小。