启动应用程序与系统启动程序和自定义应用程序之间的区别是什么?

时间:2015-08-15 05:29:50

标签: android launcher start-activity startapp

App A的主要活动是启动模式设置为标准,打开它。 当我从系统启动器重新打开它时,一切看起来都很正常。 但如果通过另一个应用程序B启动应用程序A,重启!为什么呢?

我的代码:

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);

1 个答案:

答案 0 :(得分:0)

根据https://developer.android.com/guide/topics/manifest/activity-element.html#lmode

,活动的默认android:launchModeStandard

从上面的链接:

  

每次有"标准的新意图"活动,新的   创建类的实例以响应该意图

因此onCreate()将在启动intent

时被调用

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

  

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

此处定义https://developer.android.com/guide/components/tasks-and-back-stack.html

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

此引文回答了有关Android设备主屏幕的问题:

  

设备主屏幕是大多数任务的起始位置。当。。。的时候   用户触摸应用程序启动器中的图标(或者在应用程序启动器上的快捷方式)   主屏幕),该应用程序的任务到了前台。如果不   应用程序存在任务(该应用程序尚未使用   最近),然后创建一个新的任务,"主要"活动   应用程序作为堆栈中的根活动打开。