You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android SDK 30下应用大文件最优存储方案:如何避免卸载后文件丢失?

Android 11+ 自定义非媒体大文件存储方案解答

分区存储存储非媒体文件的性能问题

可以在分区存储中存储非媒体类文件,不会额外增加应用内存负担,也不会导致运行卡顿。
你提到的卡顿问题仅出现在使用DocumentFile操作公共目录的场景下,这类操作需要经过系统DocumentProvider中转,才会有明显性能损耗。而分区存储自带的沙箱目录Android/data/[包名]/files读写逻辑和旧版公共存储的原生File API完全一致,没有额外中转开销,IO性能和旧版方案持平。

注:沙箱目录读写不需要申请任何存储权限,操作逻辑和你之前读写公共内存的代码几乎没有差异,迁移成本极低。

Android 11+ 跨应用可访问、卸载不删除的公共存储路径

存在符合要求的存储位置,不需要申请特殊权限即可使用:

  • 公共存储下的Download、Documents目录支持写入自定义格式的非媒体文件,写入的文件不会随应用卸载删除,其他应用(包括系统文件管理器)可直接访问
  • 写入时使用MediaStore.Downloads或MediaStore.FilesAPI即可,不需要申请MANAGE_EXTERNAL_STORAGE权限,也不需要用户手动授权目录访问
  • 应用自身写入公共目录的文件可直接读取,不需要额外权限;仅读取其他应用写入的自定义文件时,才需要通过SAF框架引导用户手动选中目标文件

最优存储方案选型

根据你的业务场景二选一即可:

  • 如果生成的文件仅需当前应用内部使用,不需要用户手动查看、跨应用调用:直接存储到应用专属沙箱目录Android/data/[包名]/files,性能最好,逻辑最简单,完全符合分区存储规范,仅缺点是卸载应用时文件会同步删除
  • 如果生成的文件需要用户可通过文件管理器访问、跨应用使用、卸载后留存:直接写入Download或Documents公共目录下的自定义子目录即可,性能远高于DocumentFile方案,不需要用户手动授权目录,完全适配Android 11+的分区存储规则

建议在公共目录下新建和应用名称匹配的子目录存放文件,避免和其他应用的文件混淆,也方便用户查找。


内容的提问来源于stack exchange,提问作者erinys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:54:06