【发布时间】:2016-10-31 16:46:19
【问题描述】:
在某些情况下,我需要在我的应用程序中调用exit()(我知道这不是完成的最佳方式,但这不是问题所在)。我还想显示一个新对话框,通知用户崩溃。
我创建了一个新的活动类,一个新的广播接收器,并在清单中注册了它们。接下来,我调用:
Intent intent = new Intent(this, AppCloseReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, 0);
try
{
pendingIntent.send();
}
catch(Exception ex){}
System.exit(0);
问题是有时会出现新窗口!首先我认为System.exit(0); 在新活动有机会开始之前触发(因为异步调用,我认为在文档中找不到这个)所以我在pendingIntent.send(); 和System.exit(0); 之间添加了Thread.sleep(1000),但结果是相同 - 有时会出现新窗口。日志中没有任何内容,也不例外。
新活动只是一个静态文本。
【问题讨论】:
-
这绝对不可靠。调用
System.exit()基本上会关闭虚拟机。您无法保证关闭 VM 时会发生任何事情。您当然不能期望在 UI 中显示任何内容。请解释您的用例,也许我们可以提出替代方案。 -
我的用例是在特定条件下
exit,并告诉用户应用程序停止的原因。作为替代方案,我正在使用通知,但我想要更多的持久性解决方案,这些解决方案应该留在屏幕上并等到用户手动关闭它。
标签: android android-activity android-pendingintent