按下主页按钮时,静态对象的字段变为空

时间:2015-08-12 09:57:20

标签: android singleton android-broadcast android-memory

在我的应用程序中,我使用dagger注入了一些单例管理器对象。

假设其中一个管理器,比如myManager,将数据保存在列表中,比如myList。 另外我有一个BroadcastReceiver类,比如myBroadcastReceiver,当它收到一些特定的意图时,它会调用myManager方法之一,例如myMethod。

如果我打开我的应用程序并等到myList初始化,然后按home,之后myBroadcastReceiver收到intent并调用myMethod,myList为null(尽管myManager本身不为null)。

我无法确定这是否是Android的自然行为问题,或者我是否确实犯过这样的错误。

2 个答案:

答案 0 :(得分:0)

我认为你的单例类是由于内存不足而需要在onSaveInstanceState(Bundle outState)中保存该列表并在onCreate方法中检索相同内容

答案 1 :(得分:0)

您可以实施"保存状态"解决方案使用android在您的活动或服务中提供的onSaveIntanceState功能或您正在使用的任何组件

或者您可以将数据本地保存在文件中,甚至可以更好地保存在sqlite数据库中,这可以非常简单直接地实现。

将你的清单和#34;留在记忆中"与本地存储同步,您永远不会丢失任何数据。

只需使用延迟加载,每次列表为空时,从本地存储中获取数据。