Android 数据存储(五)-总结
【摘要】 存储敏感数据(不应从任何其他应用程序访问的数据)时,可以使用内部存储、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(首页列表信息存储或商品详情等)
二、相关链接
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)