【问题标题】:Activity not visible in Recents when app is in background当应用程序处于后台时,活动在“最近”中不可见
【发布时间】:2026-01-20 02:40:01
【问题描述】:

问题描述

在我的一个应用程序中,我看到了非常奇怪的行为:当我的应用程序在前台运行(是最顶层的)时,我可以在系统的“最近”中看到它的活动。但是一旦我把它放到后台,刚才列出的相同活动(即AccountsActivity)就不再出现在最近。我的清单文件的相关部分:

<application
    android:name=".WebnetApplication"
    android:allowBackup="false"
    android:allowClearUserData="true"
    android:hardwareAccelerated="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".StartActivity"
        android:alwaysRetainTaskState="true"
        android:excludeFromRecents="true"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoDisplay" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".AccountsActivity"
        android:excludeFromRecents="false"
        android:launchMode="singleTask"
        android:windowSoftInputMode="adjustResize" />

    ...

调查结果

由于这是我唯一一个行为不端的应用程序,我检查了所有样式,以及我的WebnetActivityWebnetApplication,以确保我不会调用任何可能影响“最近”的内容。没有这样的。

然后我开始剥离 Manifest 文件,看看是否会有所改变。正如预期的那样,罪魁祸首潜伏在那里,我仍然不清楚为什么。一开始,Manifest 中的 AccountsActivity 条目根本没有 android:excludeFromRecents 条目 - 这导致 AccountsActivity 在最近记录中根本不可见。当我添加android:excludeFromRecents="true" 时,该活动在“最近”中变得可见,但仅当它位于前面时。当我移到后面时,它就从“最近”中消失了。当我从 StartActivity 声明中删除 android:excludeFromRecents="true" 时,AccountsActivity 在最近使用中变得可见,无论应用程序是在前面还是在后台,我也可以从其条目中完全删除 android:excludeFromRecents 而不会出现任何问题。

问题

目前我正在低头试图理解为什么它会这样 - 这是正常的(我不知道一些事情)还是可能是框架中的错误?任何人都遇到过类似的问题,可以分享经验、想法或解释吗?

【问题讨论】:

  • 你在多个设备上试过了吗?在敲你的头之前一定要先确定。
  • 好点,但是,是的,我尝试在许多设备和模拟器上进行复制,但它一直在发生。它发生在 2.x 和 4.x 上。如果我的“修复”解决了 2.x 的这个问题,我还没有尝试过,但它适用于 4.x
  • 我很确定你的错误是 android:launchMode="singleTask" 以及 exculdeFromRecents 一个单一任务永远不会离开后台,并且 excludefromrecents 会阻止可能在后台的任务不太确定跨度>
  • 但我保留了android:launchMode="singleTask" - 仅从StartActivity 中删除了excludeFromRecents 和所有工作。这就是我现在处于 WTF 模式的原因。
  • AccountsActivity 的入口点是什么?据我所知,那是StartActivity -> AccountsActivity。没有?

标签: android android-manifest android-recents


【解决方案1】:

从主要活动中删除android:excludeFromRecents="true"

引用android:excludeFromRecents:

是否应排除此活动发起的任务 从最近使用的应用程序(“最近的应用程序”)列表中。那是, 当这个活动是一个新任务的根活动时,这个属性 确定任务是否不应该出现在最近的列表中 应用。如果该任务应从列表中排除,则设置为“true”;放 “假”,如果它应该被包括在内。默认值为“false”。

【讨论】:

  • "即当这个activity是一个新任务的根activity时"
  • “任务”这个词是我在正确的上下文中没有发现的。感谢您指出这一点。
最近更新 更多