launchMode是“singleTop”:
<activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".GridActivity"></activity>
MainActivity是启动画面,完成后(通过服务器验证)它将调用GridActivity。
问题非常具体:
从Google Play安装应用时,图标将显示在两个位置: 应用抽屉&amp; “桌面”(启动器屏幕 - 默认启动器)。
重现问题的步骤:
我希望应用程序直接转到GridActivity,因为“singleTop”launchMethod。
BTW,如果在步骤3中我再次从Application Drawer打开应用程序,它可以正常工作,直接进入GridActivity。
我错过了什么?
答案 0 :(得分:0)
因为您;将您的启动活动重新用作&#34;启动画面&#34;它可能会被破坏,从而导致这种行为。一旦它被销毁,那么另一个调用它的进程将在一个新进程中启动它。阅读本文了解更多信息:
Android "single top" launch mode and onNewIntent method
&#34; singleTop&#34;可能没有必要启动模式。虽然为了解决这个问题,我会先使用&#34;第一次通过&#34;从主活动启动启动画面的标志。它似乎工作得很好。
编辑:
你应该小心阅读&#34; launchMode&#34; - singleTop和&#34;标准&#34;模式有这种行为,来自docs:
使用&#34;标准&#34;的活动或&#34; singleTop&#34;启动模式可以 实例化多次。
http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
您可能正在体验singleTop
的这一方面:
例如,如果&#34; singleTop&#34;的现有实例活动在 目标任务,但不是在堆栈的顶部,或者它是否在 堆栈的顶部,但不在目标任务中 - 一个新的实例 创建并推送到堆栈。
两个发射位置产生两个不同的目标任务。这可能是因为两个屏幕如何创建意图或因为&#34; splashscreen&#34;被破坏,因此不存在(它不是&#34;只有&#34;通过击退而被破坏 - Android有几种算法可以破坏活动以节省处理和内存。你通常应该假设如果活动不可见,它可以随时被销毁和重建。)