Ich verwende diesen Code, um alle nicht abgefangenen Ausnahmen zu behandeln, die zum Absturz meiner Anwendung führen können.Toast wird nicht in UnCaughtExceptionHandler angezeigt
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);
}
}
Wenn ich es mit einem bekannten aber nicht abgefangene Ausnahme laufen (nur zum Testen), Aktivität „CrashActivity“ genannt wird, aber der Toast, die, bevor es kommen muss, zeigt sich nicht.
Eigentlich wollte ich nur Toast zeigen und dann myContext.finish() aufrufen; anstatt zur CrashActivity zu gehen. Aber dieser Toast ist nicht sichtbar.
Wo liege ich falsch?
Ich bin kein Android-Programmierer, aber aus der Lesung, die ich getan habe, muss nicht auf dem UI-Thread Toast aufgerufen werden? In diesem Fall rufen Sie es im UI-Thread auf? Ich vermute, dass du wahrscheinlich schon daran gedacht hast. –
yeah du hast Recht .. ich rufe nicht den Toast auf ui Faden an :( –