gpt4 book ai didi

Android:在 Android 生命周期中保存状态

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:58 25 4
gpt4 key购买 nike

我指的是 http://developer.android.com/reference/android/app/Activity.html .

我有一个可以被用户“中断”的 Activity ,例如用户打开菜单以调用首选项屏幕。调用首选项屏幕时 onSaveInstanceState(Bundle) 被调用,我可以保存我的数据。到目前为止还好。但是在按下后退按钮时 onRestoreInstanceState(Bundle savedInstanceState) NOT 被调用。

那么如何保存我的状态呢?调用新 Activity 时必须这样做吗?但是如何呢?
我能想到的唯一方法是通过将状态传递给新 Activity 来保存状态,对保存的数据不执行任何操作,将其返回到第一个 Activity 并在 onActivitResult 中恢复状态。但这意味着我必须来回传递数据才能恢复状态。这似乎不是一个好的解决方案。

最佳答案

可能是一个错误的答案,但您确定需要调用 onRestoreInstanceState 吗?

bundle 和 onSaveInstanceState/onCreate with bundle/onRestoreInstanceState 的要点是为历史中的 Activity 保存 transient 数据堆栈,以防必须终止 Activity 以回收一些内存。如果它被杀死,可以通过 onCreate/onRestonreInstanceState 恢复 Activity,就好像它从未被杀死一样。 但是,如果 Activity 未被终止,则可能无需恢复其 transient 数据 - 大概它就是原来的样子。

Android 文档小心地指出 onSaveInstanceStae/onRestoreInstanceStatenot lifecycle methods ,因此不能保证在生命周期状态转换期间被调用。如果您需要 Hook 某些生命周期转换,请查看 lifecycle hook methods .例如,当 Activity 成为前台 Activity 时调用 onResume,当它不再是前台 Activity 时调用 onPause

Android Lifecycle Picture

关于Android:在 Android 生命周期中保存状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com