2013-06-06 135 views
0

我面临着一个问题,我的自定义类持有一些数据。这个班是单身人士,我有很多变数存在我的数据。Android数据丢失

但经过一段时间可能2或3我得到空变量没有价值。

为什么会发生?

如果是由于android默认的内存管理那么该怎么过来这个问题呢?

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

+6

因为我们没有克里斯塔尔球,我们需要编写代码。 – OcuS

+2

对于没有任何丢失的数据使用共享的pref或sqlite,存储在对象和类中的数据仅用于临时使用,当用户从任务管理器中终止应用程序时将被删除,或者在特定条件下可能被操作系统强行关闭 –

+0

我正在工作如果应用程序处于空闲模式,则在5分钟后启动同步功能同步的应用程序中,我通过按Home键而不是后退键在后台发送应用程序。应用程序在4小时后开始同步并下载数据,然后恢复应用程序,并且单身数组中没有数据。 – farrukh

回答

4

的Android可以随时杀死你的应用程序由于任何的下述原因: -

  1. 应用程序在后台和Android运行所需前运行的应用程序一些内存。
  2. 一些任务杀手杀死了App。
  3. 您从管理应用程序屏幕中杀死了应用程序。
  4. Android OS关机或重新启动。

我们解决这个问题,你可以用下面的办法,最好的一个取决于您的需求: -

  1. 如果您singelton类有一些线程,你需要不断磨合不是可以让这个类一个Service和START_STICKY属性你的应用程序将变得不太可能被Android杀死看到tutorial在这里。
  2. 如果变量的数量有限制,您可以使用SharedPreferences并在应用程序的OnCreate()/ OnResume中可以获取这些值,请参阅similar question
  3. 如果你有相当多的变量,这将是伟大的值存储在一个XML file<variable name>value</variable name>和Android提供了一个很好的机制来读/写XML文件见example herethis详细的教程。
  4. 您还可以将数据存储在数据库中,并在应用程序启动时读取该数据,以便查看此tutorial

这些方法不是相互排斥的,你可以使用它们的任意组合,在我的应用程序中我使用了前三个。不过,我也建议检查你的应用程序的内存使用情况,以便我们可以知道这种行为的确切原因。如果你的应用程序在用户焦点(在前面运行)时被杀死,那么它是令人担忧的。为了便于参考见下类似的问题,

Similar Question

Another Similar Question

Application Fundamentals