android - toda - ¿Evita que se restablezca la pila de actividades?
navegar entre actividades android studio (3)
¿Es esto algo que se debe tener en cuenta cuando se trata de herramientas nativas de Android, o es este un problema planteado por asesinos de tareas de terceros? Al menos en el emulador que usa "forzar parada" parece restablecer la pila de actividades, que es algo que esperaba que sucediera siempre cuando la aplicación fallece.
Cuando se mata el proceso de una aplicación, se guarda su pila de actividad. Luego, cuando se reinicia la aplicación, todas mis actividades se reanudan y se ejecutan en punteros nulos. En lugar de modificar cada actividad para acomodar este evento, prefiero que mi aplicación comience con la actividad base y no intente volver a crear la pila de actividades.
es posible?
Sé de Intent.FLAG_ACTIVITY_CLEAR_TOP, pero entiendo que solo matará las actividades una vez que se hayan recreado.
EDITAR: ¿está clearTaskOnLaunch lo que quiero? Lo he agregado a mi actividad predeterminada, pero no veo ningún efecto. Pero esto matará mis actividades incluso si solo minimizo la aplicación, ¿no? Prefiero borrar la pila solo si todo el proceso se reinicia.
EDIT 2: No, no es lo que quiero: un ingeniero de Android dio una respuesta completa a algunas preguntas sobre cómo usar ClearTaskOnLaunch: http://groups.google.com/group/android-developers/browse_thread/thread/da024bcaf4e1960f/ab1e2b35c360cb65?pli=1
La única solución que pude encontrar fue comprobar una variable estática global en cada instancia de onCreate () y terminar si esa variable se había restablecido a nulo, lo que indica que la tarea se había reiniciado. Cierro todas las actividades a mi actividad raíz y comienzo de nuevo.
Pronto espero tener mi aplicación en un punto donde pueda guardar los valores necesarios en onPause (), pero hasta entonces esta es la única forma confiable que sé de trabajar con la inicialización perdida ...
Yo uso este fragmento de código:
public class NoRestoreActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// Shoul be always NULL when created the first time, just in case...
if (savedInstanceState != null && savedInstanceState.getInt("SavedInstance") > 0) {
// ----- Your prefferred way to kill an application ----
try {
this.finishActivity(0);
} catch (Exception ee) {
}
try {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(10);
} catch (Exception eeee) {
}
return;
}
super.onCreate(savedInstanceState);
}
@Override
protected void onSaveInstanceState (Bundle outState){
super.onSaveInstanceState(outState);
outState.putInt("SavedInstance",1);
}
}