Android Studio中如何保存IntArray以处理屏幕旋转?
解决屏幕旋转时保存井字棋int数组状态的方案
核心正确实现方式
你尝试的onSaveInstanceState/onRestoreInstanceState是标准且推荐的方案,问题大概率出在细节处理上,以下是修正后的完整实现:
public class TicTacToeActivity extends AppCompatActivity { private int[] gameState = {2, 2, 2, 2, 2, 2, 2, 2, 2}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tic_tac_toe); // 关键:在onCreate中处理状态恢复,覆盖所有重建场景 if (savedInstanceState != null) { gameState = savedInstanceState.getIntArray("gameState"); // 兜底:防止数组为空,恢复默认值 if (gameState == null) { gameState = new int[]{2, 2, 2, 2, 2, 2, 2, 2, 2}; } } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); // 将数组存入Bundle outState.putIntArray("gameState", gameState); } // 可选保留:onRestoreInstanceState仅在特定重建场景触发,优先依赖onCreate的处理逻辑 @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); gameState = savedInstanceState.getIntArray("gameState"); if (gameState == null) { gameState = new int[]{2, 2, 2, 2, 2, 2, 2, 2, 2}; } } }
关键注意事项
- 不要单独依赖
onRestoreInstanceState:该方法仅在Activity确被销毁重建时调用,而onCreate中的savedInstanceState判断能覆盖所有重建场景(包括屏幕旋转)。 - 必须加空值判断:
getIntArray找不到对应key时会返回null,兜底恢复默认数组可避免空指针异常。 - 放弃错误方案:修改
onDestroy或清单配置阻止Activity重建属于不良实践,会破坏Android生命周期规范,适配性极差。
备选方案:SharedPreferences持久化(适用于需跨会话保存的场景)
如果除屏幕旋转外,还需要退出APP后保留状态,可通过SharedPreferences逐个保存数组元素:
// 保存数组 SharedPreferences sp = getSharedPreferences("TicTacToePrefs", MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); for (int i = 0; i < gameState.length; i++) { editor.putInt("gameState_" + i, gameState[i]); } editor.apply(); // 恢复数组 SharedPreferences sp = getSharedPreferences("TicTacToePrefs", MODE_PRIVATE); int[] restoredState = new int[9]; for (int i = 0; i < restoredState.length; i++) { restoredState[i] = sp.getInt("gameState_" + i, 2); // 默认值设为2 } gameState = restoredState;
可将保存逻辑放在onSaveInstanceState或onPause中,恢复逻辑放在onCreate中。
内容的提问来源于stack exchange,提问作者MysticSticker
相关产品推荐
相关产品推荐

