【发布时间】:2010-07-27 14:54:03
【问题描述】:
在我的应用程序中,我启动了一个活动,即在另一个应用程序(Eclipse 项目)中,方式如下:
Intent intent = new Intent();
intent.setAction(game.getLaunch());
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivityForResult(intent, game.getId());
如果第二个应用程序完成,我调用:
MySecondApplication.this.setResult(getGameId());
MySecondApplication.this.finish();
如果第二个应用程序正常终止,这可以正常工作。但我想在第二个应用程序中捕获任何未捕获的异常,并通知第一个应用程序第二个应用程序失败。因此,我尝试在我的第二个应用程序中使用 UncaughtExceptionHandler:
Thread.setDefaultUncaughtExceptionHandler(handler);
在方法中这很好用
@Override
public void uncaughtException(Thread thread, Throwable ex) {
System.out.println("Exception in my second application");
}
但是,除了制作系统输出之外,我无能为力。如果我尝试做一些更复杂的事情,例如一个警告对话框,或者以某种方式警告第一个应用程序,所有这些都没有被调用。我认为这是因为第二个应用程序已经因异常而终止。但是,我如何才能通知我的第一个应用程序第二个应用程序意外终止?有什么提示吗?
编辑#1:
在 pentium10 的帮助下,我能够通过在 uncaugthExceptionHandler 中向第一个应用程序发送广播来通知第一个应用程序第二个应用程序已崩溃。 没有必要在他链接的问题中执行此进程 ID 内容。
但是,我的问题还没有完全解决:我可以通知我的第一个应用程序,但发生异常的第二个应用程序并没有真正“终止”。这只是一个黑屏。那么我该如何解决呢?
编辑#2:
我能够通过调用关闭第二个活动:
((Activity) context).finish();
其中上下文是第二个活动。但是,现在第一个活动接收到来自第二个活动的广播意图需要很长时间。大约需要 30 秒甚至更多秒。为什么需要这么长时间?
【问题讨论】: