在Android中存储数据的安全方法是什么?

时间:2015-02-16 21:46:47

标签: android garbage-collection singleton

我一直在使用单例来存储应用程序启动时加载的数据。此数据在我的应用的整个生命周期中使用,但不需要保留以供将来发布。虽然我的单身人士被垃圾收集并且他们的数据被擦除,但我已经开始解决这个问题了。单身模式在Android上没有任何意义吗?使用本地存储或本地数据库似乎有点矫枉过正,但我​​不知道还有什么办法可以保证我的数据在我的应用程序生命周期内是安全的。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

虽然我的单身人士被垃圾收集并且他们的数据被擦除,但我已经开始尝试这个问题了。

不,他们不是。根据定义,单例(静态数据成员)不能被垃圾收集。

最有可能的是,你看到的是your process is being terminated

  

单例模式在Android上没有任何意义吗?

作为一种缓存机制,它很好。

  

我不知道还能做些什么来保证我的数据在我的应用的生命周期内是安全的

静态数据成员在生命周期内是安全的"你的进程如果您希望数据在进程终止后继续存在,则需要将该数据存储在数据库SharedPreferences或其他类型的文件中。

答案 1 :(得分:1)

您是否在应用程序的应用程序(http://developer.android.com/reference/android/app/Application.html)级别中持有对单例的引用?这应该使它们在大多数情况下保持持久性(除非它们是字节[]或其他巨大的东西)。

然而,最安全的做法是假设数据将被垃圾收集并使用该假设构建您的代码。如果它来自Web,请定义异步回调以加载数据,然后填充视图。如果它是本地非用户生成的东西,请使用异步从磁盘中获取它。如果是用户生成的,您可能需要设置一个数据库(在重新启动应用程序时可以清空)以跟踪数据。

但是,如果您还没有尝试,请先在应用程序中保留对您的单身人士的引用。这里简要介绍:http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/