【问题标题】:Recommended path for caching images on external memory / sd card在外部存储器/SD卡上缓存图像的推荐路径
【发布时间】:2013-04-15 21:15:59
【问题描述】:

当我在 Android 文件传输或 Astro 文件管理器中查看我的 sd 卡根目录时,它是一团糟,因为应用程序到处都存储文件。

作为开发人员,我们遵循最佳实践,通过缓存图像/文件等来加快我们的应用程序,并且我们使用Environment.getExternalStorageDirectory() 来获取外部存储的根(不是硬编码/sdcard)。但是接下来应该怎么做?理想情况下,我们会遵循将缓存文件转储到作为外部存储的开放字段的约定吗?

以下是我从自己的设备/经验中看到的几个选项:

  • /.cache/app_name/
  • /.app_name/
  • /cache/<app_name>/
  • /data/<app_name>/
  • /com.package.name/
  • /app_name/

我目前更喜欢在设备文件管理器中默认隐藏第一个选项。

有谁知道 Google 的推荐或几个流行/大牌应用遵循的约定?或原因这是一个坏主意?

【问题讨论】:

  • 我不知道这是最好的做法,但我通常使用带有 MODE_PRIVATE 的 Context.openFileOutput。由于它的尺寸不是太大,我正在处理它不应该是一个问题。
  • @harism 谢谢,但这与我要问的问题无关。

标签: android android-sdcard android-external-storage


【解决方案1】:

Developer Guide 声明文件应存储在目录/Android/data/<package_name>/files/ 中,这似乎是少数应用程序存储文件的地方。作为一个额外的好处,一旦你的应用程序被卸载,这里的文件就会被删除,并且不会弄乱根目录。我认为将缓存文件放在/Android/data/<package_name>/cache/ 中可能是一个不错的选择!

【讨论】:

    【解决方案2】:

    根据开发者文档

    保存缓存文件

    如果您使用的是 API 级别 8 或更高版本,请使用 getExternalCacheDir() 打开一个文件,该文件代表您应该保存缓存文件的外部存储目录。如果用户卸载您的应用程序,这些文件将被自动删除。但是,在应用程序的生命周期中,您应该管理这些缓存文件并删除那些不需要的文件以节省文件空间。

    如果您使用 API Level 7 或更低版本,请使用 getExternalStorageDirectory() 打开代表外部存储根目录的文件,然后将缓存数据写入以下目录:

    /Android/data//cache/

    是您的 Java 风格的包名,例如“com.example.android.app”。

    更多信息在这里

    http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

    希望对你有帮助

    【讨论】:

    • getExternalCacheDir() 是我正在寻找的谢谢。 Plus 提出了 SD 静音位置的问题。
    • 知道为什么在外部缓存目录上调用mkdir 没有做任何事情吗?我的清单中有android.permission.WRITE_EXTERNAL_STORAGE
    • 编辑: Nvm 工作正常,我必须重新插入手机才能显示更新
    猜你喜欢
    • 2016-03-19
    • 2013-05-25
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    相关资源
    最近更新 更多