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



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

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

这是一个

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

合理的方法是将位图存储在文件中,并将文件名存储在共享首选项中。 这为您提供了键值查找,而没有臃肿的大小或将其存储在共享首选项中的解析效率低下。

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

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