我有一个启动器应用程序,它具有一个singleTask
活动作为主要入口点。当用户导航到另一个活动或第三方应用程序,然后单击home button时,则应将此活动置于最前面。但是,我遇到的是仅用于第一次按下主按钮,而是创建了另一个实例(创建了新任务,调用了onCreate()
)。同时,旧任务仍然存在,其中包含此活动的原始实例,但是无法导航回该任务/活动或将其带到前台。
[第一次按下主屏幕按钮后,再次按下主屏幕按钮会将此活动的第二个实例置于前台。不知道为什么不第一次调用第一个实例的onNewIntent()
方法...因此仅发生一次,此后总是调用第二个实例的onNewIntent()
方法。这意味着原始活动将不可访问 ..
我试图将任务放在前台,什么也没发生……就像它不存在一样(但是任务与活动一起存在,在任何时候都不会被杀死)。我可以从代码中找到任务,也可以使用Shell脚本。它包含原始活动
这正在Android TV上发生(操作系统: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>
我尝试交替使用上述属性(优先级,excludeFromRecents,taskAffinity),也将其完全删除,它们没有任何作用...
按下主页按钮将发送以下意图:
它也有一些额外功能,但我认为不相关
您正在经历这个讨厌的长期存在的Android错误:
Re-launch of Activity on Home button, but...only the first time
您在评论中说,实际用户不会发生这种情况。事实并非如此。如果真实用户会从Play商店中安装您的应用,然后立即启动它(安装后单击“打开APP”按钮),那么问题将完全按照您的描述来再现。