Android onsaveinstancestate只工作一次?

Android onsaveinstancestate只工作一次?,android,android-activity,Android,Android Activity,我有一个应用程序有两种布局(纵向和横向)。我想保存4个int值,这样它们就不会在旋转时被擦除。为此,我调用save instance,然后恢复onCreate方法的状态,如下所示: private int operando1; private int operando2; private int operador; private int contadorIntentos; private String operadorTxt; private sta

我有一个应用程序有两种布局(纵向和横向)。我想保存4个int值,这样它们就不会在旋转时被擦除。为此,我调用save instance,然后恢复onCreate方法的状态,如下所示:

 private int operando1;
    private int operando2;
    private int operador;
    private int contadorIntentos;

    private String operadorTxt;
    private static final String CONTADOR_INTENTOS = "contadorIntentos";
    private static final String OPERANDO1 = "operando1";
    private static final String OPERANDO2 = "operando2";
    private static final String OPERADOR = "contadorIntentos";


    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(CONTADOR_INTENTOS, contadorIntentos);
        outState.putInt(OPERANDO1, operando1);
        outState.putInt(OPERANDO2, operando2);
        outState.putInt(OPERADOR, operador);

    }




 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_actividad_principal);
       //other random code
        Random generador = new java.util.Random();


        if (savedInstanceState != null){
            contadorIntentos = savedInstanceState.getInt(CONTADOR_INTENTOS);
            operando1 = savedInstanceState.getInt(OPERANDO1);
            operando2 = savedInstanceState.getInt(OPERANDO2);
            operador = savedInstanceState.getInt(OPERADOR);
        }else {
            contadorIntentos = 0;
            operando1 = generador.nextInt(1000);
            operando2 = generador.nextInt(1000);
            operador = generador.nextInt(4);
        }

事实证明,它只拯救了国家一次。在第一次旋转后(正确保存时),如果修改内容并再次旋转,它将恢复第一次旋转的状态。就像onsaveinstancestate只工作一次一样。为什么?

因为savedInstanceState在随后的所有循环中都不是空的,所以您永远不会生成新的数字(例如:不再调用这个:
operato1=generador.nextInt(1000)
…等等)。

是的,这是预期的行为。它应该只在第一次生成数字,下一次应该使用已经生成的数字。相反,它会在第一次生成数字时,第二次使用保存的数字,但如果计数器上升(在非包含的代码中),则不会记录该更改。无论您在
//其他随机代码中执行什么操作,都将使用SavedInstanceStates字段覆盖它。我建议在恢复状态后放置
//other randomCode
。我想保存的修改不会发生在//其他随机代码中,而是发生在oncreate()方法之外的一个按钮中。