0

我的自定义类保存一些数据时遇到问题。那个类是单例的,我有很多变量来保存我的数据。

但几个小时后,也许 2 或 3 我得到空变量没有值。

为什么会这样?

如果是由于android默认内存管理,那么如何解决这个问题?

当变量为空时,我有许多后台任务取决于单例变量,然后我的应用程序的所有功能都将丢失。

4

1 回答 1

4

由于以下任何原因,Android 可能会随时终止您的应用程序:-

  1. 应用程序在后台运行,android 需要一些内存用于前端运行的应用程序。
  2. 一些任务杀手杀死了应用程序。
  3. 您从“管理应用程序”屏幕中终止了该应用程序。
  4. Android 操作系统关闭或重启。

现在要克服这个问题,您可以使用以下方法,最好的方法取决于您的要求:-

  1. 如果您的 singelton 类有一些您需要不断运行的线程,那么您可以使此类成为服务,并且使用 START_STICKY 属性,您的应用程序将不太可能被 Android 杀死,请参见此处的教程
  2. 如果变量数量有限,您可以使用SharedPreferences并在 App 的 OnCreate()/OnResume 中获取这些值,请参阅类似的问题
  3. 如果您有相当多的变量,将值存储在 XML文件中会非常好,即<variable name>value</variable name>Android 提供了一种出色的机制来读取/写入 XML 文件,请参见此处的示例详细教程。
  4. 您还可以将数据存储在数据库中,并在应用程序启动时将其读回,请参阅本教程

这些方法不是相互排斥的,您可以使用它们的任意组合,在我的应用程序中,我使用了前三个。但是,我还建议检查您的应用程序的内存使用情况,以便我们知道这种行为的确切原因。如果您的应用程序在获得用户焦点(在前面运行)时被杀死,则需要担心。出于参考目的,请参阅以下类似问题,

类似问题

另一个类似的问题

应用基础

于 2013-06-06T07:53:52.110 回答