Estoy usando este código para controlar cualquier excepción no detectada que pueda causar el bloqueo de mi aplicación.Toast no aparece en UnCaughtExceptionHandler
public class ExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler {
private final Context myContext;
public ExceptionHandler(Context context) {
myContext = context;
}
public void uncaughtException(Thread thread, Throwable exception) {
Toast.makeText(myContext,
"The application has crashed, and a report is sent to the admin",
Toast.LENGTH_SHORT).show();
StringWriter stackTrace = new StringWriter();
exception.printStackTrace(new PrintWriter(stackTrace));
System.err.println(stackTrace);// You can use LogCat too
Intent intent = new Intent(myContext, CrashActivity.class);
myContext.startActivity(intent);
Process.killProcess(Process.myPid());
System.exit(10);
}
}
Cuando lo funciono con una excepción conocida, pero no detectada (sólo para probar), la actividad "CrashActivity" se llama, pero la tostada que debe venir antes de que no se muestra.
En realidad, quería mostrar solo Toast y luego llamar a myContext.finish(); en lugar de ir a CrashActivity. Pero esa tostada no es visible.
¿Dónde estoy equivocado?
No soy un programador de Android, pero según la lectura que he hecho, ¿no se debe llamar a Toast en el hilo de la interfaz de usuario? En ese caso, ¿lo está invocando en el hilo de UI? Supongo que probablemente ya hayas pensado en esto. –
sí, tienes razón ... no estoy llamando la atención sobre el hilo de la interfaz de usuario :( –