Я использую этот код для обработки любых неперехваченных исключений, которые могут привести к сбою моего приложения.Тост не отображается в 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);
}
}
Когда я запустить его с известным, но неперехваченным исключением (только для проверки), активность «CrashActivity» называется, но Toast, который должен предстать перед ним не появляются.
На самом деле я хотел показать только тост, а затем вызвать myContext.finish(); вместо перехода в CrashActivity. Но этот тост не видно.
Где я ошибаюсь?
Я не программист для Android, но из чтения, которое я сделал, не нужно ли вызывать тосты в потоке пользовательского интерфейса? В этом случае вы вызываете его в потоке пользовательского интерфейса? Думаю, вы, наверное, уже об этом подумали. –
да, вы правы .. я не называю тост по ui нить :( –