Android 数据存储(五)-总结

举报
帅次 发表于 2022/01/24 12:06:52 2022/01/24
【摘要】 存储敏感数据(不应从任何其他应用程序访问的数据)时,可以使用内部存储、Jetpack Preferences或数据库。

一、数据存储汇总

类别 内容类型 访问方法 需要权限 他应用可以访问吗? 卸载应用程序时删除的文件?
应用程序专属文件 仅供你的应用使用的文件 从内部存储,getFilesDir()或 getCacheDir()
从外部存储, getExternalFilesDir()或 getExternalCacheDir()
内部存储永远不需要
当你的应用在运行 Android 4.4(API 级别 19)或更高版本的设备上使用时,外部存储不需要
是的
Media 可共享的媒体文件(图像、音频文件、视频) MediaStore API READ_EXTERNAL_STORAGE 在 Android 11(API 级别 30)或更高版本上访问其他应用的文件时
READ_EXTERNAL_STORAGE 或 WRITE_EXTERNAL_STORAGE 在 Android 10(API 级别 29)上访问其他应用的文件时
Android 9(API 级别 28)或更低版本上的所有文件都需要权限
可以,虽然其他应用程序需要 权限READ_EXTERNAL_STORAGE
文件和其他文件 其他类型的可共享内容,包括下载的文件 存储访问框架 没有任何权限 可以,通过系统文件选择器
App preferences 键值对 Jetpack Preferences 库 没有任何权限 是的
数据库 结构化数据 Room 持久性库 没有任何权限 是的

数据存储需要多少空间:

内部存储空间用于特定应用数据的空间有限(可通过多个进程,可以获得更多的内存空间(图库等大型文件存放))。如果你需要保存大量数据,可以使用外部存储、SharedPreference存储或数据库存储

数据访问可靠性:

如果你的应用程序的基本功能需要某些数据,那么就将数据放在内部存储目录数据库中禁止存储在外部存储中,某些设备允许用户删除与外部存储对应的物理设备(如拔出存储卡)。

需要存储什么样的数据:

  • 需要一些简单的存储选择使用应用程序专属文件存储。
  • 对于可共享的媒体内容(图片),那就使用共享存储,以便其他应用程序可以访问该内容。
  • 对于结构化数据,可以使用Jetpack Preferences(用于键值数据)或数据库(用于包含超过 2 列的数据)。

数据私密性:

存储敏感数据(不应从任何其他应用程序访问的数据)时,可以使用内部存储、Jetpack Preferences或数据库。内部存储具有对用户隐藏数据的额外好处。

其实这几种存储方式都差不多,你可以由场景自行选择,如:

  • 共享文件(图片保存)

  • SP or MMKV (简单的用户信息等)

  • SQLite or Room(首页列表信息存储或商品详情等)

二、相关链接

Android 数据全方案处理

Android 数据存储(四)-Room

Android 数据存储(三)-SQLite数据库实例

Android 数据存储(二)-Preferences or MMKV

Android 数据存储(一)-文件存储

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。