在我的应用程序中,我通过以下方式启动一个 Activity ,即在另一个应用程序(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 的帮助下,我能够通过在 uncugthExceptionHandler 中向第一个应用程序发送广播来通知第一个应用程序第二个应用程序已崩溃。 没有必要在他链接的问题中执行此进程 ID 的操作。
但是,我的问题尚未完全解决:我可以通知我的第一个应用程序,但发生异常的第二个应用程序并未真正“终止”。这只是一个黑屏。那么我该如何解决这个问题呢?
编辑#2:
我能够通过调用关闭第二个 Activity :
((Activity) context).finish();
其中上下文是第二个 Activity 。但是,现在第一个 Activity 接收到来自第二个 Activity 的广播 Intent 需要很长时间。大约需要 30 秒甚至更多秒。为什么要花这么长时间?
最佳答案
你需要发出广播或者启动一些服务来通知它。
另一个问题会帮助你,它是关于 starting activity on uncaughtException() call
关于java - 我如何通知其他应用程序我的应用程序失败了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3344884/