studio savedinstancestate que not example called activity android android-lifecycle onsaveinstancestate onrestoreinstancestate

android - savedinstancestate - ¿cuándo se llama onRestoreInstanceState?



save instance state android fragment (5)

Después de onStart () que está después de onCreate ()

Lo siento por mi incomprensión, pero soy nuevo en el desarrollo de Android.

Tengo una aplicación con actividad A y actividad B en ella, y voy de la actividad A a la actividad B. Cuando salí de la actividad A, se onSaveInstanceState método onSaveInstanceState , pero cuando volví a la actividad A (de la actividad B en el mismo aplicación), el paquete en el método onCreate era nulo.

¿Qué puedo hacer para guardar el estado anterior de la actividad A? Solo quiero almacenar los datos para la vida útil de la aplicación.

¿Puede alguien ayudarme con esto?

Aquí está mi código para la Actividad A:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState != null) { Log.v("Main", savedInstanceState.getString("test")); } else { Log.v("Main", "old instance"); } } @Override public void onSaveInstanceState(Bundle savedInstanceState) { Log.v("Main", "save instance"); savedInstanceState.putString("test", "my test string"); super.onSaveInstanceState(savedInstanceState); } public void buttonClick(View view) { Intent intent = new Intent(this, Activity2.class); startActivity(intent); }

Aquí está mi código para la Actividad B, cuando presiono un botón para volver a la actividad A:

public void onBack(View view) { NavUtils.navigateUpFromSameTask(this); }


El estado de guardado y restauración está destinado a guardar los datos temporales actuales que están obsoletos cuando el usuario sale de la aplicación. Cuando minimiza o abandona la Actividad abriendo el siguiente, el sistema podría matarlo por falta de recursos y reiniciarse con savedInstanceState cuando vuelva a acceder a él. Por lo tanto, use onSaveInstanceState() solo para guardar los datos de la sesión de minimización y restauración.

Entonces, si comienzas una nueva actividad al frente y vuelves a la anterior (lo que estás tratando de hacer), la actividad A no se mata (se detiene) y se reinicia sin que se destruya. Puede obligar a matarlo y restaurarlo marcando Don''t keep activities en el menú de opciones del desarrollador.

Si llama a finish() o elimina la Activity de la lista de tareas recientes, savedInstanceState no se onCreate() a onCreate() desde que se borró la tarea.

Si el valor debe ser persistente, considere usar SharedPreferences.


Esto sucede porque estás navegando por el camino difícil. Si utilizó la navegación predeterminada del botón de retroceso del teléfono, su onCreate obtendría el paquete pasado.

Para evitar este problema, le sugiero que guarde su estado en las preferencias compartidas, así como una copia de seguridad. Cuando el paquete es nulo, restaurelo de las preferencias compartidas.



Usé en este caso una bandera y SharedPreferences. Esto debería funcionar, y cuando cambie la orientación de la pantalla.