我有一个包含多个片段和主要活动的应用。我的片段设置为在主活动内部的框架布局中显示内容。有点像视图寻呼机。
每个片段都包含一个列表视图。我将列表的内容存储在主要活动中。
当应用暂停时,(当用户按下设备主页按钮时)我需要将应用的值保存在一个包中。 出于某种原因,当用户恢复应用程序时,永远不会调用onRestoreInstanceState()。结果我得不到变量的值。
当用户尝试从单独的应用程序恢复时,应用程序有时会崩溃。 只有在应用程序长时间处于后台或设备内存不足时才会发生这种情况。
我应该使用onRestoreInstanceState()还是其他不同的东西? 是否可以覆盖onRestoreInstanceState()并手动调用它?
答案 0 :(得分:0)
通常情况是,在这种情况下,android只会杀死整个应用程序进程。
然后,Android会重新创建您的堆栈和所有碎片。这样做也很聪明,因为它会在你的中传递保存的包onCreate and onCreateView
您可以检查这些捆绑包的无效性,并像使用普通捆绑包一样使用它们并从中恢复数据。我通常在sqlite中保存一个大的列表,只保存一个布尔标志来指示状态是否保存在包中。
保存的捆绑包有1mb的限制,这适用于整个应用程序。在较新的版本中,api 24+我认为,如果保存的状态大于此值,则会出现异常。之前在logcat中只记录了一条警告