Hier ist mein Code: ("apagar" bedeutet "Turn off", "reiniciar" bedeutet "Neustart")Warum meine Anwendung hängen bleibt, wenn ich eine Warnung in meiner eigenen "uncoughtException()" -Methode zeige?
public void uncaughtException(Thread thread, Throwable ex)
{
try
{
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(iAct).create();
//alertDialog.setTitle("");
alertDialog.setMessage("Se ah producído un error y la aplicación no puede continuar funcionando." +
"¿Desea reiniciarla o finalizarla?");
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Reiniciar", new ReiniciarOnClickListener(iAct));
alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE,"Apagar", new ApagarOnClickListener(iAct));
alertDialog.show();
}catch(Exception e){
Thread.setDefaultUncaughtExceptionHandler(iDefaultHandler);
iDefaultHandler.uncaughtException(thread, ex);
}
}
der gesamte Code innerhalb Try
Block ausgeführt wird, aber der Alarm wird niemals angezeigt, und die Bildschirm bleibt grau.
In iDefaultHandler
habe ich das Ergebnis von getDefaultUncoughtException()
gespeichert, bevor ich meins.
Alle Informationen, die fehlen, bitte fragen Sie danach. Ich weiß nicht, wie ich das lösen soll.
Wird dies im UI-Thread oder in einem Hintergrund-Thread ausgeführt? –
Ich erstelle nie einen zusätzlichen Thread, also denke ich, dass es im UI-Thread ist. –
Ja, im Debug-Fenster, wenn es in einem Breakpoint in diesem Code stoppt, ist der suspendierte Thread derjenige, der "main" sagt. –