gpt4 book ai didi

java - 缓存图像和数据时应该使用内部存储还是外部存储?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:04 26 4
gpt4 key购买 nike

我读过这个Android save app settings/data in Internal/External Storage但我不认为我真的得到了答案。

我正在开发一个应用程序,我应该在其中存储一些“缓存”数据,比如一打图像和一些字符串 (json)。

最初我将所有这些存储在 sdcard 上,(外部存储)但后来我认为这可能会被大多数最新设备中的 SDCard 弃用所弃用。

读了一点之后,我了解到外部存储不仅是 sdcard,而且是“可移动存储介质(如 SD 卡)或内部(不可移动)存储”,因此不应该弃用它,但.. .它是共享空间,存储在那里的文件没有所有权,所以第一个问题是我在删除应用程序时无法删除它们。

所以我更改为内部存储,以避免文件/图像“公开”并在应用删除后将它们删除。

这是推荐的方法吗?

在内部存储空间较低但 SD 卡中有大量空间的旧设备上,这是一种好方法吗?

我的应用程序支持从 1.6 到 4.0(到目前为止),所以我有很多旧设备......我必须让应用程序在所有设备上都能正常运行。

期待一些有趣的答案!

最佳答案

这取决于您要存储的数据类型。

你提到它是缓存数据,所以我的假设是,如果由于某种原因它全部消失,那应该无关紧要。这使我相信您应该使用 getCacheDir()。在这种情况下,如果缓存变得太大,系统将删除文件,因此内部存储空间较低的设备应该不会出现问题(尽管无论如何建议您自己管理),它相对安全并且将由应用程序管理因此,如果有卸载,它将被删除。

getExternalCacheDir() 是在 2.2 中引入的,所以对你没有任何用处,除非你想检测版本并在 2 个缓存目录之间切换 getExternalCacheDir()不提供安全性,因此无论如何都可以通过访问 SD 卡来访问数据。我认为您可能想要这样做的唯一原因是您想要的缓存大小,但从您的描述来看,数据似乎并不过分。

根据评论更新:

although this is a specific case where it's cache...but I don't want it to be deleted whenever the system wants. It's the kind of cache that I need the to app decide when to purge. What is the main concern of storing in on "normal" internal storage without being on the cache dir?

如果您进入系统清理内部缓存数据的阶段,因为存储空间太低,那么您可能应该让它清理此类应用程序数据。通过使用标准的内部数据存储,您可以绕过这种安全防护,这可能会产生比删除应用程序数据更令人不快的问题。

如果您的数据非常重要,那么我建议尝试确定更重要的特定数据并单独管理这些数据。如果您确定的这些数据需要安全,那么使用文件或数据库(取决于数据类型)的内部存储似乎是您唯一的实际选择,但您必须警惕这些数据的积累。

根据评论更新

What do you think about using SharedPreferences to save string data? Is there a limit on SharedPreference string saved size? Is it a (good) possibility?

我过去使用共享首选项来存储相对较大的 json 字符串没有问题,我发现它比使用数据库来保存有限值的原始数据类型(和字符串)更简单。但是,当您有图像或很多值时,管理会变得更加复杂。此外,就存储空间而言,您将遇到与标准内部存储相同的问题。

关于java - 缓存图像和数据时应该使用内部存储还是外部存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8536586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com