Android开发Android知识

Android 数据的传递和缓存笔记

2017-03-25  本文已影响95人  chauI

以下都是自己的一些简单见解,有问题还请指出

分析

由于使用的场合和用途不同,我把数据的传递和缓存分成几种不同的情况

临时数据

缓存数据,保证不丢失

比如说用户的登录信息、全局设置的状态等需要保证即使 app 被回收、重启也不能丢失的数据。
这时候一般使用 SQLitDatabase / SharedPreferences 来完成缓存。
前者是 Android 自带的小型数据库,在追求安全的时候可以使用,详情可以参考我的写的另一篇:
Database 笔记
后者将数据存储在本地的一个 xml 文件,使用比较方便也更快,同样,具体用法见于我写的另一篇:
SharedPreferences 笔记

缓存数据,提高性能

常见于一个页面加载很多从网络下载下来的图片,或者新闻列表。
为了提高性能,通常会把数据临时缓存到本地,但如果还是用数据库或者
SharedPreferences 来缓存会显得太过笨重,在清理缓存和控制内存大小方面很不方便。
这时候可以用 LruCache 来缓存数据,针对图片还有三级缓存的说法
详见于我写的另一篇 LruCache + File 图片缓存笔记

Application + ArrayMap

Application 是生命周期和 App 相同的一个类,可以用于存储传递数据,
ArrayMap 对应 JAVA 的 HashMap,用于存储数据。

上面提到的 Intent、Database、SharedPreferences 等方法的一个局限性就是只能传递或保存基本的数据类型。面对复杂的对象只能将对象序列化才行。

但假如我们在 Application 中创建一个 ArrayMap,并使用单例模式使得这个数组的实例保持唯一,这样就可以很简单快捷的实现在全局范围内传递或者保存任意类型的数据 。

这个实现可以见于我写的 Application 笔记
要注意的是这个方法如果不能正确的使用,是得不偿失的,具体..点上面的链接。

上一篇下一篇

猜你喜欢

热点阅读