restaurar - todas las aplicaciones se detienen android
La aplicaciĆ³n Android se bloquea, pero no se reinicia, se reanuda desde otro punto de la aplicaciĆ³n (2)
Android reiniciará la última actividad activa de forma predeterminada. En lugar de obligarlo a reiniciar, la mejor estrategia sería arreglar su aplicación, de modo que las actividades no se bloqueen o salgan con gracia incluso si no hay datos disponibles. Si depende absolutamente de algunos datos (extras intencionados) y no hay valores predeterminados, puede simplemente llamar a finish()
si no está disponible, o iniciar la actividad principal / principal.
Otra forma es tener su propio manejador de excepciones predeterminado que reinicia la actividad principal, etc. después de informar el bloqueo usando ACRA (creo que hay una solicitud de funciones para esto en el rastreador de errores de ACRA).
La aplicación en cuestión ya se ha implementado. Me enteré de ACRA y lo agregaré para descubrir por qué están ocurriendo los bloqueos de la aplicación.
Mi problema, sin embargo, es que la aplicación se bloqueará (aparecerá el cuadro de diálogo que le da la opción de "Forzar cierre" o "Esperar"), pero en lugar de reiniciar completamente la aplicación, se reanudará desde un punto anterior al bloqueo. Sin embargo, esto causa problemas, que solo se solucionan reiniciando la aplicación (por ejemplo, pérdida repentina de datos, bloqueos que no tienen sentido, etc.).
Entonces, ¿cómo puedo forzar mi aplicación, una vez que se estrelló, para terminar? (NO reiniciar).
Editar: El mayor problema es que después de que la aplicación falla, todos los datos en mi archivo de preferencias desaparecen, hasta que la aplicación se reinicia cuando vuelve.
Sé que esta pregunta es un poco antigua, pero para referencias futuras y googlers, aquí hay una respuesta completa de otra pregunta difícil de encontrar, : Android App se reinicia tras Crash / force close
crear una clase utilizada para manejar unCaughtException
public class MyExceptionHandler implements
java.lang.Thread.UncaughtExceptionHandler {
private final Context myContext;
private final Class<?> myActivityClass;
public MyExceptionHandler(Context context, Class<?> c) {
myContext = context;
myActivityClass = c;
}
public void uncaughtException(Thread thread, Throwable exception) {
StringWriter stackTrace = new StringWriter();
exception.printStackTrace(new PrintWriter(stackTrace));
System.err.println(stackTrace);// You can use LogCat too
Intent intent = new Intent(myContext, myActivityClass);
String s = stackTrace.toString();
//you can use this String to know what caused the exception and in which Activity
intent.putExtra("uncaughtException",
"Exception is: " + stackTrace.toString());
intent.putExtra("stacktrace", s);
myContext.startActivity(intent);
//for restarting the Activity
Process.killProcess(Process.myPid());
System.exit(0);
}
}
Luego, en cada hilo (por lo general, solo tiene uno, a menos que inicie un nuevo hilo (Async o ..., por supuesto, si conoce los hilos si puede hacer nuevos;)), configure esta clase como DefaultUncaughtExceptionHandler
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this,
YourCurrentActivity.class));
¡Recuerda sin embargo! Hazlo en el último paso de desarrollo de tu aplicación, TIENES que intentar manejar todas las excepciones una por una antes de dejarlas para DefaultUncaughtExceptionHandler