安卓实用知识AndroidAndroid代码封装

漫谈Android数据缓存、数据序列化和Intent传递复杂数据

2017-03-02  本文已影响676人  极客大白

1、概述

本篇的主题是关于Android数据的缓存和序列化。对于复杂的数据,需要使用数据库存储,但相对简单并且不需要复杂查询等操作的数据,通常会使用缓存的方式进行存取。缓存的方式主要有Sharedpreference、序列化、本地文件三种。

Android数据缓存的基本方式:

2、数据缓存的场景和技术选型

2.1简单数据存取

存取简单数据,用Google官方提供的Sharedpreference是再合适不过的选择,SP支持基本类型数据的存放。
但需要注意的是一定不要使用Sharedpreference存放复杂的数据,具体有何弊端,请参考这篇文章《谈一谈SharedPreference的一些使用误区》

2.2 复杂数据存取
2.2.1 Serializable 方式
2.2.3 写入本地文件方式
2.3 Intent 传递复杂数据
2.3.1 Serializable 方式

相对简单,类及其内部的成员都实现Serializable接口即可,不需要额外的代码,但性能和速度上较慢。
参考这篇文章:Parcelable vs Serializable

2.3.2 Parcelable 方式

速度较Serializable快10倍以上,但实现起来较复杂,关于Parcelable的使用请参考这篇文章:Android序列化完全解析(二)-Parcelable

但这也只是流传的主流看法,这篇文章Android序列化完全解析(三)-拨乱反正,堪比窦娥的Serializable的作者就提出了不同观点。当然,这作者是在Serializable的使用方式上做出了一些改变后,得出的结果,不予置评,具体可以根据自己的喜好选择。

关于简化Parcelable的使用,降低使用成本请参考这篇文章Android中传递对象的三种方法的“简化Parcel操作部分”,作者列举了一系列简化Parcelable的工具和第三方库。

2.3.2 将对象转为Json字符串传递

将对象转为Json字符串,以字符串的方式传递,接收后再反序列化。
这种可能是最简单的一种方式,但根据这篇文章Android中传递对象的三种方法的测试结果,这种方式也是效率最低的一个。

参考文章:
本文中提到的文章都是可以点击的文章链接,在此一并谢过作者了。下列文章,也是本文的参考文章。
Android中传递对象的三种方法
Intent 数据传递 总结
4.5.2 Intent之复杂数据的传递
Parcelable vs Serializable

《点击此处查看更多推荐的精彩技术文章》

其他精彩文章推荐:
Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
Android BaseAdapter的极简封装

上一篇 下一篇

猜你喜欢

热点阅读