0

我有一个包含几个片段和一个主要活动的应用程序。我的片段设置为在主活动内的框架布局中显示内容。有点像视图寻呼机。

每个片段都包含一个列表视图。我将列表的内容存储在主活动中。

当应用程序暂停时,(当用户按下设备主页按钮时)我需要将应用程序的值保存在一个包中。出于某种原因,当用户恢复应用程序时,永远不会调用 onRestoreInstanceState()。结果,我没有得到变量的值。

有时,当用户尝试从单独的应用程序恢复时,应用程序会崩溃。这只发生在应用程序长时间处于后台或设备内存不足时。

我应该使用 onRestoreInstanceState() 还是其他东西?是否可以覆盖 onRestoreInstanceState() 并手动调用它?

4

1 回答 1

0

通常发生的情况是,在这种情况下,android 只会杀死整个应用程序进程。

然后,Android 会重新创建您的堆栈和所有片段。这样做也很聪明,因为它会将保存的包传递到你的

onCreate and onCreateView

您可以检查这些捆绑包的无效性并像使用普通捆绑包一样使用它们并从中恢复数据。我通常在 sqlite 中保存一个大列表,并只保存一个布尔标志来指示状态是否保存在包中。

保存的捆绑包有 1mb 的限制,这是针对整个应用程序的。在较新的版本中,我认为 api 24+ 如果保存的状态大于该值,则会出现异常。早些时候,logcat 中只有一个记录的警告

于 2017-12-17T01:32:48.280 回答