Hem*_*mal 3 android activity-state start-activity
我有一个活动,它启动结果代码的各种活动,并在onActivityResult方法中获得结果,它根据结果代码启动适当的活动.
onSaveInstanceState 是没有在Activity中调用,因为结果已经开始.
例如,导航活动将活动A启动为:
Intent intent = new Intent(this, A.class);
startActivityForResult(intent, Constants.REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
然后A通过设置结果代码完成,以便App再次重定向到Navigation活动,并onActivityResult调用方法.
所以我的问题是:为什么活动A onSaveInstanceState不会在完成时被调用并导航回导航活动?
只有在杀死Activity时才会调用onSaveInstanceState().
我不知道你想在该方法中做什么,但你可能应该将代码移动到Activity Lifecycle的相应方法中.
来自http://developer.android.com/reference/android/app/Activity.html:
请注意,将持久数据保存在onPause()而不是onSaveInstanceState(Bundle)中非常重要,因为后者不是生命周期回调的一部分,因此不会在其文档中描述的每种情况下调用.
此外,onSaveInstanceState()的方法描述完全描述了您的情况:
不要将此方法与活动生命周期回调混淆,例如onPause(),当活动被放置在后台或者去往破坏的路径时,或者在破坏之前调用的onStop()时,它会被调用.调用onPause()和onStop()时的一个示例,而不是此方法是当用户从活动B导航回活动A时:不需要在B上调用onSaveInstanceState(Bundle),因为该特定实例永远不会被恢复,所以系统避免调用它.调用onPause()而不是onSaveInstanceState(Bundle)的示例是在活动A前面启动活动B时:如果在B的生命周期内没有杀死活动A,系统可能会避免调用活动A上的onSaveInstanceState(Bundle) A的用户界面状态将保持不变.