将活动引用存储在savedinstancestate中是否安全

时间:2014-06-05 05:02:17

标签: android android-layout android-fragments android-activity android-sqlite

在我的应用程序中,我保留了一个控制器类&这是一个单身人士班。我使用此类从第一个活动中获取数据,或者存储我的应用程序中剩余活动所需的一些信息。甚至有时我还需要从上一个活动访问第一个活动方法。这时,这个控制器会帮忙。

当用户按下主页按钮,如果用户按下主页按钮,并在某段时间后或在打开其他几个应用程序后恢复应用程序崩溃时,问题就出现了。

我知道这个问题是因为,活动引用不会存在于控制器中。因此,每当用户按下homebutton,我都可以保存所有这些实例。用户恢复后使用它吗?。

即使我在一个活动中有片段,这些参考也需要保存吗?

如何处理这些Senarios?,任何帮助

1 个答案:

答案 0 :(得分:0)

  

因此,每当用户按下homebutton,我都可以保存所有这些实例&   用户恢复后使用它吗?。

按下主页时,不会删除“实例”。当应用程序处于后台时,它们会被删除,Android会在一段时间后需要更多内存(可能永远不会发生)。

  

将活动引用存储在savedinstancestate

中是否安全

是的,这是saved instance state was made for

  

当您的活动开始停止时,系统会调用   onSaveInstanceState()因此您的活动可以保存状态信息   一组键值对。这个的默认实现   方法保存有关活动视图状态的信息   层次结构,例如EditText小部件中的文本或滚动   ListView的位置。

  

我可以保存所有这些实例吗?

您无法保存实例 - 您必须将用于重新构建活动的信息存储为键值对。我所做的是存储足够的信息,以便活动可以自行重建。

例如,如果Activity有一个从api.myapp.com构建的列表,我将保存此URL以及列表的滚动位置。其余的你应该再次检索,就像你刚刚第一次启动应用程序一样 - 这将使你的代码更简单。