我有一个启动器应用程序,它有一个singleTask
活动作为主要入口点。当用户导航到另一个活动或第 3 方应用程序然后点击主页按钮时,应该将此活动带到最前面。但是我的经验是,仅对于第一次按下主页按钮,会创建另一个实例(创建一个新任务,onCreate()
被调用)。与此同时,旧任务仍然存在,包含此活动的原始实例,但无法导航回该任务/活动或将其带到前台。
在第一次按下主页按钮后,下一次按下主页按钮会将这个活动的第二个实例带到前台。不知道为什么不第一次onNewIntent()
调用第一个实例的方法......所以这只发生一次,之后总是onNewIntent()
调用第二个实例的方法。这意味着原始活动将无法访问..
我试图将任务带到前台,什么都没有发生......就像它从未存在过一样(但任务与活动一起存在,它在任何时候都不会被杀死)。我可以从代码中找到任务,也可以使用 shell 脚本。它包含原始活动
这发生在 Android TV (Os: Pie)上。知道这可能是什么原因吗?我真的不明白这是怎么发生的......顺便说一句,如果我将活动设置为singleInstance
.
活动如下所示:
<activity
android:name=".activities.MainActivity"
android:excludeFromRecents="true"
android:launchMode="singleTask"
android:theme="@style/AppTheme">
<intent-filter android:priority="2">
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.ALL_APPS"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
我尝试交替使用上述属性(priority、excludeFromRecents、taskAffinity),也完全删除了它们,它们没有任何效果......
按下主页按钮会发送以下意图:
- 行动:“android.intent.action.MAIN”
- 类别:“android.intent.category.HOME”
- 组件:上述活动
它还有一些附加功能,但我认为这无关紧要