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.
Para responder a su pregunta, eche un vistazo al documento de Android: https://developer.android.com/reference/android/app/Activity.html#onRestoreInstanceState(android.os.Bundle)
Dice que se llama a onRestoreInstanceState después del método onStart () en el ciclo de vida de la actividad.
Usé en este caso una bandera y SharedPreferences. Esto debería funcionar, y cuando cambie la orientación de la pantalla.