You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中onCreate的savedInstanceState始终为Null问题排查

问题原因与解决办法

核心问题:onSaveInstanceState方法未正确重写

你的代码里的onSaveInstanceState方法缺少@Override注解,且方法修饰符错误地写成了public(正确修饰符应为protected),这导致系统并未真正调用你编写的状态保存逻辑。虽然Logcat显示了"Saving State",但这大概率是测试时通过其他触发场景(比如屏幕旋转)偶然触发的,当系统完全关闭应用时,这个自定义方法不会被系统回调。

修复步骤

  1. 给onSaveInstanceState添加@Override注解,确保是重写父类的标准方法
  2. 将方法修饰符改为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:30:56