Android应用程序在后台应用程序中保存数据

问题描述:

当前我正在开发xmmp客户端,它在应用程序处于前台时工作得相当好。但是由于在应用程序处于后台时,我将相当多的数据保存在Application类中(复杂的ArrayList,字符串和布尔值作为公共静态),所以每个字段都被垃圾收集。Android应用程序在后台应用程序中保存数据

所以我的问题是当我从后台获取应用程序时检索这些数据的最佳方式是什么?这是一个相当麻烦的问题,因为我到目前为止在每个课程中都使用了这个公共静态信息,并导致我的应用崩溃问题在于用户可以将应用程序放在每个活动的背景中,并且在Application类中重新填充数据看起来很难。也许还有另一种保持全球数据访问的方式,不会在后台被抹去?

在此先感谢

如果问题是,你的应用程序是由Android毁坏了,当在研究背景,做标准的方法是将数据中的onDestroy)保存(您的主要活动的功能,检索该onCreate方法中的数据何时应用程序再次打开(使用包)。

如果您希望数据在手机关闭时仍然存在,您可以考虑永久存储选项,如数据库。看一看http://developer.android.com/guide/topics/data/data-storage.html

最后,如果你想要一种方式继续在后台运行,你可以看看服务类。但是,如果将要求您提供一些更多的代码能在你的服务和活动

+0

所以,如果我使用的服务,并在服务,我会保持我的数据,他们将保持不动,我会停止此服务的那一刻?这听起来像个好主意,但我担心活动 - 服务交流。我将如何实现这一目标?任何例子,将不胜感激 – Ragnar

+0

是的,你可以启动服务,它会继续运行,直到你停止它,即使你的活动停止。对于服务到活动的交流,你可以使用Ibinder(我从来没有真正做过),或者使用LocalBraodcastManager。这个效率稍低,但它很容易使用,并保持您的数据在您的应用程序中保密(比广播更好)。你有一个完整的教程在这里:http://www.intertech.com/Blog/using-localbroadcastmanager-in-service-to-activity-communications/ –

+0

好极了。感谢这个教程,但我有一个问题。如何将数据从服务传递给监听器?在这一刻,我使用列表的公共静态对象迭代并更改它或更便宜以刷新它。那么如何将更改后的对象发送回服务是可以做到的? – Ragnar