我的应用程序是一个 Activity(它现在是 FragmentActivity 的子类,尽管我认为这不重要),我们称它为 Activity A。
在其中,一个按钮通过 Intent 使用没有特殊标志的 startActivity() 启动它,导航到(比如说)Activity B。
两个 Activity 在 list 中都没有任何特殊标志(SingleTop)等,没有调用 finish() 等。即没有什么异常。
Activity A 的 onSaveInstanceState() 方法被调用,我保存了一些状态信息。
在 Activity B 中,我按下 BACK 键返回到 Activity A。
它的onCreate()方法被调用了,但是“savedInstanceState”的Bundle为null,所以我无法重建我之前保存的状态。
任何想法我做错了什么,以及如何确保我恢复状态。
顺便说一句:在配置更改(比如轮换)时,一切正常....
最佳答案
当您仅通过按返回键返回 Activity A 时,调用 onCreate()
似乎很奇怪。一般来说,它应该只显示现有的 Activity 而不试图重新创建它。我还认为当您启动其他 Activity 时调用 onSaveInstanceState()
也很奇怪。事实上,文档指出它可能不会在启动 Activity B 时调用 onSaveInstanceState()
:
An example: when onPause() is called and not onSaveInstanceState(Bundle) is when activity B is launched in front of activity A: the system may avoid calling onSaveInstanceState(Bundle) on activity A if it isn't killed during the lifetime of B since the state of the user interface of A will stay intact.
来自 here .
我认为还有其他事情正在发生。
关于android - 在 onSaveInstanceState 期间创建的 SavedInstantState 未在 onCreate 中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284361/