Android onSaveInstanceState期间创建的SavedInstantState未在onCreate中还原

Android onSaveInstanceState期间创建的SavedInstantState未在onCreate中还原,android,android-activity,Android,Android Activity,我的应用程序是一个活动(现在它是FragmentActivity的一个子类,尽管我认为这并不重要),让我们称它为活动a 在它里面,一个按钮导航到(比如)活动B,方法是使用startActivity()通过Intent启动它,而不使用特殊标志 两个活动在清单中都没有任何特殊标志(SingleTop)等,也没有调用finish()等,即没有异常 调用了活动A的方法onSaveInstanceState()get,我保存了一些状态信息 在活动B中,我按下后退键,然后返回到活动A 调用了它的onCrea

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

在它里面,一个按钮导航到(比如)活动B,方法是使用startActivity()通过Intent启动它,而不使用特殊标志

两个活动在清单中都没有任何特殊标志(SingleTop)等,也没有调用finish()等,即没有异常

调用了活动A的方法onSaveInstanceState()get,我保存了一些状态信息

在活动B中,我按下后退键,然后返回到活动A

调用了它的onCreate()方法,但“savedInstanceState”的Bundle为null,因此我无法重建以前保存的状态

任何关于我做错了什么的想法,以及我如何确保我能回到国家的想法


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

当您只需按后退键返回活动a时,
onCreate()
就会被调用,这似乎很奇怪。一般来说,它应该只显示现有的活动,而不尝试重新创建它。我还认为,当您启动其他活动时,
onSaveInstanceState()
被调用也很奇怪。事实上,文档中指出,在启动活动B时,它可能不会调用
onSaveInstanceState()

例如:调用onPause()而不调用 onSaveInstanceState(Bundle)是当活动B在 活动A:系统可能会避免调用saveInstanceState(Bundle) 在活动A上,如果自 的用户界面状态将保持不变


我想还有别的事

当您只需按后退键返回活动A时,
onCreate()
就会被调用,这似乎很奇怪。一般来说,它应该只显示现有的活动,而不尝试重新创建它。我还认为,当您启动其他活动时,
onSaveInstanceState()
被调用也很奇怪。事实上,文档中指出,在启动活动B时,它可能不会调用
onSaveInstanceState()

例如:调用onPause()而不调用 onSaveInstanceState(Bundle)是当活动B在 活动A:系统可能会避免调用saveInstanceState(Bundle) 在活动A上,如果自 的用户界面状态将保持不变


我想还有别的事

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

活动A从未被销毁,因此不应该调用onCreate()。你能帮我写一些代码吗?

启动活动B并返回到活动A只需要调用活动A的
onPause()
onResume()
方法。你以前的状态不应该改变。。。除非操作系统在后台杀死A以回收内存,但这与方向更改没有区别。启动活动B并返回到活动A只应调用活动A的
onPause()
onResume()
方法。你以前的状态不应该改变。。。除非操作系统在后台杀死了一个来回收内存,但这和方向改变没什么区别。是的,我也不明白onCreate()再次被调用,你确认了……所以我调查了……结果,我不知道,活动B捕获了BACK键并启动了活动a的一个新实例(关于它为什么这样做的长篇大论…)。修复了,谢谢,我也无法理解onCreate()再次被调用,而您确认了它…所以我调查了一下…结果,在我不知道的情况下,活动B捕获了BACK键并启动了活动a的一个新实例(关于它为什么这样做的原因,说来话长…)。修好了,谢谢