如何通知另一个应用程序我的应用程序失败了?

时间:2010-07-27 14:54:03

标签: java android

在我的应用程序中,我以下列方式启动一个活动,即在另一个应用程序(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");
}

然而,除了制作一个sysout之外,我不能再做任何事了。如果我试图做一些更复杂的事情,例如一个警告对话框,或以某种方式警告第一个应用程序,所有这些都没有被调用。我认为这是因为第二个应用程序已经因为异常而终止。但是,如何通知我的第一个应用程序,第二个应用程序无法预料地终止?任何提示?

编辑#1:

在pentium10的帮助下,我能够通过向uncaugthExceptionHandler中的第一个应用程序发送广播来通知第一个应用程序第二个应用程序已崩溃。 没有必要在他链接的问题中做这个过程id。

但是,我的问题还没有完全解决:我可以通知我的第一个应用程序,但是我发送异常的第二个应用程序并没有真正“终止”。它只是一个黑屏。那我怎么解决这个问题呢?

编辑#2:

我可以通过调用

来关闭第二个活动
((Activity) context).finish();

其中context是第二个活动。然而,现在需要很长时间才能通过第一活动接收来自第二活动的广播意图。大约需要30秒甚至更多秒。为什么这需要这么长时间?

1 个答案:

答案 0 :(得分:2)

您需要发布广播或启动某项服务以通知它。

另一个问题可以帮助您了解starting activity on uncaughtException() call

相关问题