0

App A has an main activity that launch mode set as standard, open it. When I reopen it from system launcher, everything looks normal. But if start app A through another app B, A restart! Why?

My code:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("A's package name");
    launchIntent.setAction(Intent.ACTION_MAIN);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    startActivity(launchIntent);
4

1 回答 1

0

活动的默认值android:launchModeStandard根据https://developer.android.com/guide/topics/manifest/activity-element.html#lmode

从上面的链接:

每次有一个“标准”活动的新意图时,都会创建一个新的类实例来响应该意图

因此 onCreate() 将在您启动意图时被调用

这适用于您的应用程序,对于 Android 启动器,它是不同的,它使用Tasks的是

用户在执行某项工作时与之交互的一系列活动

在这里定义https://developer.android.com/guide/components/tasks-and-back-stack.html

这些任务保留了堆栈中活动的顺序,因此它知道首先要恢复哪个活动。

此报价回答了您关于 Android 设备主屏幕的问题:

设备主屏幕是大多数任务的起始位置。当用户触摸应用程序启动器中的图标(或主屏幕上的快捷方式)时,该应用程序的任务就会进入前台。如果应用程序不存在任务(该应用程序最近未使用),则创建一个新任务,并且该应用程序的“主”活动作为堆栈中的根活动打开。

于 2015-08-15T05:55:46.443 回答