onCreate参数 Bundle savedInstanceState是否一定为空 还是一定不为空
时间: 2024-11-06 11:13:13 浏览: 79
`onCreate()` 方法的参数 `Bundle savedInstanceState` 并不一定总为空。它可以在以下两种情况下传递 Bundle:
1. **第一次启动 Activity**:
- 如果这是第一次启动你的 Activity,系统不会传递 `savedInstanceState`,因为之前没有保存过状态。此时 `savedInstanceState` 为 `null`。
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) { // 判断是否存在之前的保存状态
// 初始化默认值或执行常规的创建操作
}
}
```
2. **Activity重建**:
- 当 Activity 因屏幕旋转、任务切换(如按下 Home 键然后再次回到该 Task)或者系统内存管理导致被迫关闭并重新创建时,可能会传递一个不为空的 `Bundle`,其中包含之前保存的状态信息。这时你可以使用这些信息来恢复Activity的状态。
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// 有保存状态的情况下,恢复数据
int position = savedInstanceState.getInt("position");
// 其他恢复步骤...
} else {
// 没有保存状态,执行初始化流程
}
}
```
因此,在 `onCreate()` 中,你应该始终检查 `savedInstanceState` 是否为 `null`,然后根据它的存在与否采取相应的处理策略。
阅读全文
相关推荐


















