在外部存储器/SD卡上缓存图像的推荐路径

2023-12-28

当我在 Android 文件传输或 Astro 文件管理器中查看 SD 卡根目录时,发现很混乱,因为应用程序到处都存储着文件。

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

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

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

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

有谁知道 Google 的推荐或几个流行/大牌应用程序遵循的惯例吗?或者这是一个坏主意的原因?


根据开发者文档

保存缓存文件

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

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

/Android/data//cache/

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

更多信息请点击这里

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

希望能帮助到你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在外部存储器/SD卡上缓存图像的推荐路径 的相关文章

  • Flutter :已处置的 CameraController,在已处置的 CameraController 上调用了 buildPreview()

    如何正确初始化和处理相机控制器 我在用camera 0 9 4 5 与许多人一起 其他错误 https stackoverflow com questions 70592464 flutter change the path of reco
  • PhoneGap/Cordova 应用程序通知

    我是 PhoneGap Cordova 的新手 我希望向我的应用程序添加一些通知 推送通知 因此当应用程序上发布新文章时 它会提醒用户 本地通知 在设定的时间间隔 日期和时间 我可以提示用户我的应用程序上的最新文章 我进行了大量搜索 但找不
  • 房间数据库更改未触发观察者

    当房间数据库更改时 我试图更新 RecyclerView 但是 当数据库发生更改时 不会调用 MainActivity 中定义的观察者的 onChanged 方法 如果我让 DAO 返回 LiveData 而不是 List 并在 ViewM
  • 如何在 Android 中更改 Drawable 的颜色?

    我正在开发一个 Android 应用程序 并且我有一个从源图像加载的可绘制对象 在此图像上 我想将所有白色像素转换为不同的颜色 例如蓝色 然后缓存生成的 Drawable 对象 以便稍后使用它 举例来说 假设我有一个 20x20 PNG 文
  • Android 图表[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个项目 其中有一些图表 图形 刻度图 烛台图和范围图 但问题是 没有该图表的库 我有烛台图的
  • 拖动时跳转 ImageView。 getX() 和 getY() 值正在跳跃

    我创建了一个用于拖动视图的 onTouchListener 如果我使用的话 图像可以顺利拖动getRawX and getRawY 问题是 当您向下放置第二个指针然后抬起第一个指针时 图像将跳转到第二个指针 此 onTouchListene
  • socket.io xhr 在连接缓慢时出现错误(3G 移动网络)

    当我在 3G 移动网络 互联网连接速度慢 上测试我的真实聊天应用程序时 Socket io反复断开然后重新连接 我已经记录了原因 它说 xhr post error 这提高了 transport error 然后断开连接 我可以知道什么意思
  • 在 gradle 中,我应该排除分支下的所有依赖项还是只排除根就足够了?

    我已将以下自定义任务添加到我的build gradlefile 为了打印出依赖项的依赖项 This part is useful for finding conflict resolution s between dependencies
  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • 改造中的多个队列导致内存不足错误?

    我正在使用retrofit2 做我的项目 当我的呼叫失败时 我再次重复相同的呼叫 重复此 呼叫使我的应用程序强制关闭 当我查看日志时 我得到了错误日志 如下所示 我觉得这是由于同一呼叫的多次排队造成的 所以我在排队之前就这样做了 我打电话给
  • 覆盖 Android 中的电源按钮

    我正在开发一个应用程序 其中我需要在按下电源按钮时执行一个操作 但不幸的是我无法处理按下电源按钮时的操作 我尝试使用 onKeyDown 和dispatchKeyEvent 方法 但似乎没有任何效果 任何人都可以建议我解决这个问题的任何其他
  • Ionic 2 RC0 和 Angular 2 最新的 Android 构建错误(ngc:错误:静态解析符号值时遇到错误)

    当我使用构建android时出现错误ionic build android命令 ngc 错误 静态解析符号值时遇到错误 引用本地 非导出 符号 字典 考虑导出符号 原始 ts文件中的位置14 8 解析符号TRANSLATION PROVID
  • 如何禁用操作栏上“向上”按钮的翻转?

    背景 我做了一个 应用程序管理器 https play google com store apps details id com lb app manager 替代应用程序 我希望添加 RTL 从右到左 语言的翻译 因为我知道在某些 And
  • 透明 9patch 图像:显示出线条

    我得到了一个透明的 9 补丁图像 其中有 9 条补丁线显示槽 This is the output 显然我不希望水平线可见 这就是我创建 9patch 的方式 This is the final image that is used in
  • Android SearchView 在启动时隐藏键盘

    我有一个小问题正在尝试解决 当我打开应用程序时 键盘会显示输入搜索视图的查询 不过 我只想在单击搜索视图时显示键盘 我该如何解决 Thanks 这对我有用 用于隐藏焦点的代码 searchView SearchView view findV
  • 如何更改操作栏背景和文本颜色

    我正在使用本教程中的导航抽屉 http www androidhive info 2013 11 android sliding menu using navigation drawer http www androidhive info
  • 丢失应用程序的密钥库文件(但已启用 Google Play 应用程序签名)

    我已经失去了原来的keystore用于签署我的应用程序的文件 我的应用启用了 Google Play 应用签名 如果我联系 Google 支持人员 是否可以重置密钥 以便我可以继续上传到此包 我希望我可以做到这一点 因为应用程序签名已启用
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • 从文件路径显示图像视图?

    我需要仅使用文件名而不是资源 ID 来显示图像 ImageView imgView new ImageView this imgView setBackgroundResource R drawable img1 我在可绘制文件夹中有图像
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示

随机推荐

  • Django Rest 框架:如果未对可浏览 API 进行身份验证,则进行重定向

    我不确定如果用户不满足权限标准 如何实现重定向登录 正如文档所述 在运行视图主体之前 会检查列表中的每个权限 所以视图中的重写方法是没有结果的 如果有人能指出我正确的方向吗 谢谢 Django Rest Framework 是一个用于构建
  • 散景字形坐标与 x_axis_type 'datetime'

    我正在尝试将一个简单的文本字符串 字形 添加到使用的散景图中x axis type datetime 我的代码 精简到其要点 如下 p figure plot width 900 plot height 380 x axis type da
  • 反应酶测试库

    我是反应测试库的新手 我热衷于使用酶 当我浏览文档时 我发现 create react app 允许直接包含第三方测试库 我尝试了以下方法来添加酶 但没有成功 这是我尝试过的 但它在我的 app test js 中不起作用 import R
  • Scrapy:如何调试scrapy丢失的请求

    我有一个 scrapy 蜘蛛 但有时它不返回请求 我发现通过在产生请求之前和获得响应之后添加日志消息 Spider 可以迭代页面并解析每个页面上的项目废弃的链接 这是代码的一部分 SampleSpider BaseSpider def pa
  • 如何在java中使用中文和日文字符作为字符串?

    Hi我正在使用java语言 在此我必须使用一些中文 日文字符作为字符串并使用 System out println 进行打印 我怎样才能做到这一点 Thanks Java Strings支持Unicode 所以中文和日文都没问题 不过 其他
  • 或者不是有效的 C++:为什么这段代码可以编译?

    这是我用 QtCreator 制作的一个非常简单的 C 应用程序 int main int argc char argv int a 1 int b 2 if a lt 1 or b gt 3 return 1 return 0 对我来说
  • Eigen 将旋转和平移组合成一个矩阵

    我有一个旋转矩阵rot Eigen Matrix3d 和平移向量transl Eigen Vector3d 我希望它们一起出现在 4x4 变换矩阵中 我只是为了我的生活不知道如何在 Eigen 中做到这一点 我认为仿射可以以某种方式使用 但
  • Android 中的 Z 索引?

    我在一个 xml 中有多个元素 listview slidingdrawer edittext 和 button 我想滑动抽屉顺序始终位于另一个元素的前面 但我不能 这是我的 xml
  • 与复合组件一起使用时出现重复 ID 异常

    有条件地使用复合组件时 出现重复 ID 异常
  • SwingUtilities.invokeLater()

    我如何感受到 SwingUtilities invokeLater 在任何 swing 应用程序中的重要性 请给出一些代码示例 每当你需要更新 GUI 中的某些内容时 你应该通过AWT 事件线程 这是因为 AWT 以及顶部的 Swing 有
  • 在使用 XP 模式的 Windows 7 上构建 Visual Studio 2010 Silverlight 4 项目时出错

    我在 Windows 7 上的 XP 模式 VM 中安装了 Visual Studio 2010 Beta 2 然后我创建了一个简单的 Silverlight 4 测试版 项目并尝试构建它 我收到以下错误 错误 1 ValidateXaml
  • Spring Security,JUnit:@WithUserDetails 用于在 @Before 中创建的用户

    在使用 Spring MockMVC 的 JUnit 测试中 有两种方法用于验证 Spring Security 用户的身份 WithMockUser使用提供的凭据创建一个虚拟用户 WithUserDetails获取用户名并将其解析为正确的
  • Spark Streaming Kafka 流

    我在尝试使用 Spark Streaming 读取 kafka 时遇到一些问题 我的代码是 val sparkConf new SparkConf setMaster local 2 setAppName KafkaIngestor val
  • 使用python正则表达式来匹配时间

    我正在尝试解析一个 csv 文件 其时间格式为下午 6 30 或上午 7 点或午夜 我已经用谷歌搜索并阅读了 python 文档中的正则表达式文档 但未能成功实现它们 我第一次尝试匹配它们是 re findall r d 1 2 d 1 2
  • 带过滤器的 Web Api $extend IQueryable

    我有一个设置 我获得了一个 WebApi OData 服务 该服务返回 客户 返回客户的代码是 public IHttpActionResult GetCustomers ODataQueryOptions
  • Java 8 流中聚合运行时异常

    假设我有一个抛出运行时异常的方法 我正在使用一个Stream对列表中的项目调用此方法 class ABC public void doStuff MyObject myObj if throw new IllegalStateExcepti
  • 如何在kivy+python中从数据库获取数据并显示在表格中

    list py import kivy kivy require 1 9 0 replace with your current kivy version import sqlite3 as lite from kivy uix scree
  • PHP foreach 更改原始数组值[重复]

    这个问题在这里已经有答案了 我对多维数组非常陌生 这让我很烦恼 我的数组如下 fields array names gt array type gt text class gt name name gt name text before g
  • JavaScript 倒计时和重定向

    我有一个 javascript 脚本 它运行倒计时 然后重定向到另一个链接 由于我现在所有网站都使用静态域运行相同的代码 因此我想知道是否可以编辑脚本以使其根据其周围的 span 标签重定向到不同的链接 我还删除了这段代码 所以如果有人有更
  • 在外部存储器/SD卡上缓存图像的推荐路径

    当我在 Android 文件传输或 Astro 文件管理器中查看 SD 卡根目录时 发现很混乱 因为应用程序到处都存储着文件 作为开发人员 我们通过缓存图像 文件等来遵循最佳实践 以使我们的应用程序更快 并且我们使用Environment