【问题标题】:Android Application saving data when app in backgroundAndroid应用程序在后台应用程序时保存数据
【发布时间】:2013-12-12 09:01:34
【问题描述】:

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

所以我的问题是当我从后台获取应用程序时检索这些数据的最佳方法是什么?这是一个相当大的问题,因为到目前为止我在每个类中都使用了这个公共静态,它会导致我的应用程序崩溃。问题是用户可以从每个活动中将应用程序置于后台,并且在 Application 类中重新填充数据似乎很难。也许还有另一种方法可以让数据保持全局访问,并且不会在后台擦除?

提前致谢

【问题讨论】:

    标签: android background-process data-storage


    【解决方案1】:

    如果问题是你的应用在后台被android销毁,标准的做法是将数据保存在你的主要活动的onDestroy()函数中,并在应用时在onCreate方法中检索这些数据再次打开(使用捆绑包)。

    如果您希望数据即使在手机关闭时也能保留,您可以考虑使用数据库等永久存储选项。看看http://developer.android.com/guide/topics/data/data-storage.html

    最后,如果您想在后台继续运行,您可以查看 Service 类。但是如果需要您进行更多编码才能在您的服务和活动之间进行通信

    【讨论】:

    • 因此,如果我使用服务并且在服务中我会保留我的数据,那么在我停止此服务之前它们将保持不变?这听起来是个好主意,但我担心活动服务通信。我将如何实现这一目标?任何示例将不胜感激
    • 是的,您可以启动服务,即使您的活动停止,它也会一直运行直到您停止它。对于活动通信的服务,您可以使用 Ibinder(我实际上从未这样做过),或使用 LocalBraodcastManager。这效率有点低,但它很容易使用,并且可以在您的应用程序中保持数据的私密性(比广播更好)。你在这里有一个完整的教程:intertech.com/Blog/…
    • 太棒了。感谢本教程,但我有一个问题。如何将数据从服务传递到侦听器?在这一刻,我使用列表的公共静态对象来迭代和更改它或使用 adaper 来刷新它。那么如何将更改的对象发送回服务是否有可能呢?
    • “从服务到听众”是什么意思?我认为 LocalBroadcastManager 是您所需要的
    • 好吧,也许一些信息会有所帮助。所以我正在开发一个 xmpp messanger。我有从 xmpp 服务接收消息并将它们添加到特定聊天列表的侦听器。我使用的聊天列表现在是一个公共静态数组列表,保存在 Application 类中。现在,正如我之前提到的,我想制作一个保存数据的服务。因此,听众会对该聊天列表进行交互并对其进行更改(添加新消息)。因此,我想以某种方式从服务中获取此列表并对其进行一些更改,但是更改应该可用,因此在我再次使用列表的另一个活动中具有正确的数据
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多