是否建议使用共享首选项来缓存位图图像?为什么或者为什么不?

时间:2015-01-13 06:20:44

标签: android caching sharedpreferences

我想在我的Android应用程序中缓存一些我正在下载的图像。缓存的工作方式是 - 图像映射到图像名称。因此,我可以使用缓存的图像,直到图像名称更改为止 SharedPreference看起来似乎是最好的选择,因为它提供了一个内置选项,以键值对的形式存储。关键是图像名称,值是base64格式的图像。但我读到这是一个不好的做法。为什么?如果我将它存储在外部文件中,我将不得不实现键值对的机制(在共享偏好中内置)。

什么应该是正确和快速的方法,为什么?

2 个答案:

答案 0 :(得分:8)

这是一个可怕的想法。 Base 64是存储二进制数据的低效方式。你有一个文件系统 - 使用它。此外,SharedPreferences不是为了存储那么多数据,在您的首选项中读取或写入任何其他数据时会导致令人难以置信的减速。

将位图存储在文件中以及共享首选项中文件的名称是合理的。这为您提供了键值查找,而没有膨胀的大小或解析将其存储在共享首选项中的低效率。

Base64真的是一个非常丑陋的黑客。当你进行丑陋的黑客攻击并尝试在基于文本的界面中存储二进制数据时,就会使用它。如果您需要使用它,则意味着您正在尝试将某项技术用于从未打算过的事情,并且应该停止使用。

答案 1 :(得分:1)

是的,您可以使用共享首选项将图像存储为位图。但是如果你想在共享偏好中存储更多图像,那么就不要使用它,因为它会减慢你的任务。