Android中onCreate的savedInstanceState始终为Null问题排查
问题原因与解决办法
核心问题:onSaveInstanceState方法未正确重写
你的代码里的onSaveInstanceState方法缺少@Override注解,且方法修饰符错误地写成了public(正确修饰符应为protected),这导致系统并未真正调用你编写的状态保存逻辑。虽然Logcat显示了"Saving State",但这大概率是测试时通过其他触发场景(比如屏幕旋转)偶然触发的,当系统完全关闭应用时,这个自定义方法不会被系统回调。
修复步骤
- 给
onSaveInstanceState添加@Override注解,确保是重写父类的标准方法 - 将方法修饰符改为
protected,并添加@NonNull注解以符合Android规范
修复后的代码片段:
@Override protected void onSaveInstanceState(@NonNull Bundle savedInstanceState) { Log.i(TAG, "Saving State"); savedInstanceState.putInt(KEY, 2); super.onSaveInstanceState(savedInstanceState); }
补充说明
- 系统主动销毁Activity(如内存不足、屏幕旋转)时,会触发
onSaveInstanceState保存状态;但如果是用户手动从最近任务栏划掉应用关闭,部分系统不会调用该方法,这种场景下需要用SharedPreferences做持久化存储。 - 验证状态保存的正确方式:可以通过旋转屏幕测试,此时Activity会重建,
savedInstanceState应能正常获取到值;若要模拟应用被系统回收的场景,可开启开发者选项里的"不保留活动"功能。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

