如果应用已经在运行而不是创建新的实例,请将应用程序置于前面

时间:2016-07-11 14:49:24

标签: android android-intent

我正在从我的应用启动系统应用,我可以使用此代码成功启动它

Intent i=getPackageManager.getLaunchIntentForPackage("Your package name");
i.setFlags(Intent.FLAGS_REORDER_TO_FRONT);
i.setFlags(Intent.FLAGS_SINGLE_TOP);
startActivity(i);

但它总是重新启动或创建app的新实例。如果特定应用程序已经在运行,我希望它将它带到前面而不是创建它的新实例。 我尝试了很多方法,但没有工作,它始终在我正在运行的应用程序的顶部创建新实例。 请任何人解决我的问题

1 个答案:

答案 0 :(得分:0)

这取决于您要启动的活动的启动模式。

如果启动模式为“标准”,则无法将其置于最前面:

  

当启动模式为“标准”(source)

时,为新意图创建始终的新实例

对于所有其他启动模式,请尝试使用以下两个标志:

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

documentation中所述,这应该具有以下效果(应符合您的预期行为):

  

FLAG_ACTIVITY_CLEAR_TOP最常与FLAG_ACTIVITY_NEW_TASK一起使用。当一起使用时,这些标志是一种在另一个任务中定位现有活动并将其置于可以响应意图的位置的方式。