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

Is it advisable to use shared preferences to cache bitmap images? why or why not?

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

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

这是个糟糕的主意。 Base 64 是一种低效的二进制数据存储方式。你有一个文件系统——使用它。此外,SharedPreferences 并不是要存储那么多数据,在您的首选项中读取或写入任何其他数据时,它会导致难以置信的速度减慢。

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

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

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