Android - 不同存储选项的生命周期

时间:2014-03-03 14:43:03

标签: android security android-sqlite lifetime android-external-storage

Android提供以下数据存储选项:

共享首选项 - 将私有原始数据存储在键值对中。

内部存储 - 将私有数据存储在设备内存中。

外部存储 - 将公共数据存储在共享外部存储上。

SQLite数据库 - 将结构化数据存储在私有数据库中。

缓存 - 应用程序运行期间的缓存数据。(可能会在空间不足时明确)

我想知道的是这些存储的生命周期。

  1. 应用程序关闭时显式清除哪些存储(显然缓存)
  2. 在重新安装应用程序时清除哪些存储
  3. 应用程序更新时清除了哪些存储
  4. 在卸载应用程序时清除哪些存储
  5. 在应用程序清除数据上清除哪些存储
  6. 移动工厂重置时清除了哪些存储
  7. Rom升级/更改时清除了哪些存储
  8. 此问题的一个扩展是,使用哪个存储我的数据安全 丢失以及未经授权的资源访问(用户,root用户的应用程序)。

3 个答案:

答案 0 :(得分:4)

  

应用程序关闭时显然清除哪些存储(显然缓存)

高速缓存

  

重新安装应用程序时清除哪些存储

高速缓存

  

应用程序更新时清除了哪些存储

高速缓存

  

卸载应用程序时清除哪些存储

缓存,SQLite,共享首选项

  

应用程序清除数据上清除了哪些存储

缓存,SQLite,共享首选项

  

移动工厂重置时哪些存储空间清除

清除所有内容,但不清除外部存储数据

  

这个问题的一个扩展是,使用哪个存储我的数据在丢失和未授权资源(用户,以root用户的应用程序)访问方面更安全。

最好以加密形式将数据存储在SQLite中。如果您的设备是root用户,那么这意味着您甚至可以访问SQLite。

答案 1 :(得分:2)

应用程序关闭:应用程序关闭后,不会删除缓存文件。

根据android docs,

When the device is low on internal storage space, Android may delete these cache files to recover space. However, you should not rely on the system to clean up these files for you. You should always maintain the cache files yourself and stay within a reasonable limit of space consumed, such as 1MB. When the user uninstalls your application, these files are removed.

应用程序重新安装和卸载:CacheShared PreferencesInternal StorageDatabases将在卸载应用时被删除。

应用程序更新:通常会恢复以前版本中的所有内容。文档也不清楚这一点。

应用程序清除数据:除External Storage之外的所有内容都将被永久删除。

恢复出厂设置:执行恢复出厂设置将清除除预安装的应用程序及其数据之外的所有应用程序及其数据。您可以使用Google帐户恢复您的应用,但不能恢复数据(如果数据未使用BackUp Api备份。

对于你的最后一个问题, 如果将数据存储在设备中,则存在 NO Secure 数据存储。甚至可以使用USB文件选项删除外部数据存储。对于安全数据,您应该在服务器上维护用户数据并按需获取。

希望我很清楚。

答案 2 :(得分:1)

在回答您的问题时,默认情况下,持久存储(SQL,Internal \ External storage,SharedPreferences)的行为大致相同,而Cache的行为则不同。

持久存储 - 在以下情况下不会被清除:1,2,3 - 将在其他情况下被清除。

内部\外部存储 - 可以在应用程序删除后继续存在(如果配置正确),因此,有可能不会删除4& 5,如果你专门处理这个。

缓存 - 将在所有情况下清除(在某些情况下,应用程序关闭后您可以访问缓存,但不可靠)。

7 *(ROM更新可以使用备份解决方案保留应用程序数据,否则,将与6相同)