SingleTask活动在同一进程中多次创建

问题描述 投票:0回答:1

我有一个启动器应用程序,它具有一个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),也将其完全删除,它们没有任何作用...

按下主页按钮将发送以下意图:

  • action:“ android.intent.action.MAIN”
  • 类别:“ android.intent.category.HOME”
  • 组件:上述活动

它也有一些额外功能,但我认为不相关

android android-activity android-tv launchmode android-activitymanager
1个回答
0
投票

您正在经历这个讨厌的长期存在的Android错误:

Re-launch of Activity on Home button, but...only the first time

您在评论中说,实际用户不会发生这种情况。事实并非如此。如果真实用户会从Play商店中安装您的应用,然后立即启动它(安装后单击“打开APP”按钮),那么问题将完全按照您的描述来再现。

© www.soinside.com 2019 - 2024. All rights reserved.