1

我的应用程序是一个活动(现在是 FragmentActivity 的一个子类,尽管我认为这并不重要),我们称之为活动 A。

在其中,一个按钮导航到(比如说)Activity B,方法是使用 startActivity() 通过 Intent 启动它,没有特殊标志。

这两个活动在清单中都没有任何特殊标志(SingleTop)等,而不是调用完成()等。即没有什么不寻常的。

Activity A 的方法 onSaveInstanceState() 被调用,我保存了一些状态信息。

在活动 BI 中,按 BACK 键并返回活动 A。

调用了 onCreate() 方法,但是“savedInstanceState”的 Bundle 为空,因此我无法重建之前保存的状态。

任何想法我做错了什么,以及如何确保我恢复状态。

顺便说一句:在配置更改(比如旋转)时,一切正常......

4

2 回答 2

1

onCreate()当您通过按返回键返回活动 A 时被调用似乎很奇怪。一般来说,它应该只显示现有活动而不尝试重新创建它。我也认为onSaveInstanceState()当你开始其他活动时被调用也很奇怪。事实上,文档说明它在启动 Activity B 时可能不会调用:onSaveInstanceState()

一个例子:当 onPause() 被调用而不是 onSaveInstanceState(Bundle) 是当活动 B 在活动 A 之前启动时:如果活动 A 在 B 的生命周期内没有被杀死,系统可能会避免在活动 A 上调用 onSaveInstanceState(Bundle)因为 A 的用户界面状态将保持不变。

这里

我认为还有其他事情正在发生。

于 2012-09-05T15:55:56.173 回答
0

Activity A 从未被销毁,因此不应调用 onCreate()。你能放一些代码吗?

于 2012-09-05T16:17:54.880 回答