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);
答案 0 :(得分:0)
根据https://developer.android.com/guide/topics/manifest/activity-element.html#lmode
,活动的默认android:launchMode
为Standard
从上面的链接:
每次有"标准的新意图"活动,新的 创建类的实例以响应该意图
因此onCreate()将在启动intent
时被调用这适用于您的应用,对于Android启动器它是不同的,它使用Tasks
用户在执行时与之交互的一系列活动 某份工作
此处定义https://developer.android.com/guide/components/tasks-and-back-stack.html
这些任务保存了堆栈中活动的顺序,因此它知道首先要恢复哪一个。
此引文回答了有关Android设备主屏幕的问题:
设备主屏幕是大多数任务的起始位置。当。。。的时候 用户触摸应用程序启动器中的图标(或者在应用程序启动器上的快捷方式) 主屏幕),该应用程序的任务到了前台。如果不 应用程序存在任务(该应用程序尚未使用 最近),然后创建一个新的任务,"主要"活动 应用程序作为堆栈中的根活动打开。