【问题标题】:How can I notify another application that my application has failed?我如何通知另一个应用程序我的应用程序失败了?
【发布时间】: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 秒甚至更多秒。为什么需要这么长时间?

【问题讨论】:

    标签: java android


    【解决方案1】:

    您需要发出广播或启动一些服务来通知它。

    关于starting activity on uncaughtException() call的另一个问题将帮助您

    【讨论】:

    • 谢谢,这似乎很有帮助。你知道我是否可以在你链接的问题中使用广播而不做这个进程 id 事情吗? (当然我可以试试,但如果你已经知道了,我可以节省很多时间;))
    • 我没有这方面的经验。请发回您的发现,以便我们知道如何实现。
    • 这很酷,但我不知道这个问题。你应该针对不同的问题提出新的问题。无论如何将广播更改为其他内容,例如吐司,启动活动,启动服务并查看是否延迟加载。
    猜你喜欢
    • 2022-01-12
    • 2013-06-02
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    相关资源
    最近更新 更多