我的应用程序是一个活动(现在是FragmentActivity的子类,虽然我认为不重要),让我们称之为活动A.
在其中,一个按钮通过使用startActivity()在没有特殊标志的情况下通过Intent启动它来导航到(比方说)Activity B.
两个活动都没有在清单中有任何特殊标志(SingleTop)等,而不是调用finish()等,即没有异常。
活动A的方法onSaveInstanceState()被调用,我保存了一些状态信息。
在活动B中,我按了BACK键并返回活动A.
调用onCreate()方法,但是“savedInstanceState”的Bundle为null,因此无法重建我之前保存的状态。
任何想法我做错了什么,以及如何确保我恢复状态。
BTW:在配置更改(比如旋转)上,一切正常....
答案 0 :(得分:1)
当您通过按后退键返回活动A时,onCreate()
被调用似乎很奇怪。通常,它应该只显示现有活动而不尝试重新创建它。我还认为,当您启动其他活动时,onSaveInstanceState()
被调用也很奇怪。事实上,文档说明在启动活动B时可能不会调用onSaveInstanceState()
:
一个例子:当调用onPause()而不是 onSaveInstanceState(Bundle)是在前面启动活动B的时候 活动 - 答:系统可能会避免调用onSaveInstanceState(Bundle) 如果活动A没有在B的生命周期内被杀死,那么自从活动A. A的用户界面状态将保持不变。
来自here。
我认为还有其他事情正在发生。
答案 1 :(得分:0)
活动A从未被销毁,因此不应调用onCreate()。你能把一些代码放好吗?