android - 在 onSaveInstanceState 期间创建的 SavedInstantState 未在 onCreate 中恢复

标签 android android-activity

我的应用程序是一个 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/

相关文章:

java - 如何在Android Graph View上创建静态标签?

java - Cordova run android 无法找到 JAVA_HOME,即使它已正确设置

java - Android onOptionsItemSelected(...) 所有 Activity 的监听器

android - 通过 Intent 传递的 int 值在新 Activity 上返回 0

android - 从 Activity 中监听 LocationChanged

android - 移除Android上的切换 Activity 动画

java - 您如何验证在 Android 2.1 中输入的 EditTextPreference 的格式和值?

java - 如何将以下字符串转换为 Java 中的日期或日历对象?

安卓选择器。按下后如何进入正常状态?

android - 想要在 Activity 进入后台之前清除 EditText 内容