假设我有2个申请,A和B.
我正在使用PackageManager从A启动B.但是,如果B没有运行,我希望流程恢复到任何页面,如果B已经在运行,那么启动B的新实例。可以实现这种流程,或者它将始终启动应用程序的新实例。
答案 0 :(得分:1)
使用此:
//Get package manager
PackageManager manager = getPackageManager();
//Get intent for application
Intent i = manager.getLaunchIntentForPackage("com.package.application");
i.addCategory(Intent.CATEGORY_LAUNCHER);
//Start new application
startActivity(i);
它将尝试运行应用程序的启动器,如果它已经运行,它将会恢复。
答案 1 :(得分:0)
根据我的经验,PackageManager#getLaunchIntentForPackage(String)
产生一个始终开始新任务的意图,从不提升现有任务。如果您看到同样的事情,请改为:
public static Intent newLauncherIntent(final Context context) {
final Intent intent = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
return intent;
}
尽管设置了Intent.FLAG_ACTIVITY_NEW_TASK
,但这会引发任何现有任务。