onRestoreInstance状态在片段中为空

问题描述 投票:0回答:1

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

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

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

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

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

android android-lifecycle onrestoreinstancestate
1个回答
0
投票

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

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

onCreate and onCreateView

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

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

© www.soinside.com 2019 - 2024. All rights reserved.