startActivity在后台打开最后一个应用而不是所需的活动

时间:2017-09-17 13:18:36

标签: android android-intent

我有一个可以接收事件的应用程序(基本上是来自后台服务的消息),当它发生时,我正在调用此代码:

Intent dialogIntent = new Intent(this, MainActivity.class);
                dialogIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(dialogIntent);

此代码应该将应用程序返回到前端,以便用户可以处理该事件。

此代码仅在我正在处理的应用程序也是用户所在的最后一个应用程序时才有效。代码在这些情况下不起作用:

1)用户暂停了应用程序,打开了另一个应用程序,然后暂停了它,所以第二个应用程序是后台的最后一个应用程序 - 在这种情况下,即使我正在启动{{{},最后一个应用程序将始终打开1}}。例如,如果我已将我的应用移至后台,打开Android的设置,然后收到一个事件,Android的设置屏幕将会打开,而不是我的应用。

2)用户在另一个应用程序中。在这种情况下,应用程序根本不会被带到前面。

如何使特定应用程序无论如何都可以从后台恢复?

2 个答案:

答案 0 :(得分:1)

使用启动器类别如下:

Intent resumeIntent = new Intent(context, MainActivity.class);
resumeIntent.setAction(Intent.ACTION_MAIN);
resumeIntent.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(resumeIntent);

还要在活动清单中添加android:launchMode="singleTop"

答案 1 :(得分:1)

您可以在活动清单中添加android:launchMode =“singleTop”。