应用程序处于后台时,活动在“最近”中不可见

时间:2014-06-26 17:37:33

标签: android android-manifest android-recents

问题描述

在我的一个应用程序中,我看到了很奇怪的行为:当我的应用程序在前台运行时(最顶层),然后我可以在系统的最近看到它的活动。但是,只要我将其置于背景中,之前列出的相同活动(即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"时,活动在“最近”中变得可见,但只有当它在前面时才会显示。当我向后移动时,它从最近消失了。当我从android:excludeFromRecents="true"声明中删除StartActivity时,无论应用是在前面还是在后台,AccountsActivity都会在最近显示,我可以完全从其条目中删除android:excludeFromRecents而没有任何问题同样。

问题

目前我正在弯着头试图理解为什么一切都这样 - 这是正常的(我不知道什么)或者它可能是框架中的错误?任何人都面临类似的问题,可以分享经验,想法或解释吗?

1 个答案:

答案 0 :(得分:9)

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

引自android:excludeFromRecents

  

是否应排除此活动启动的任务   来自最近使用的应用程序列表(&#34;最近的应用程序&#34;)。那是,   当此活动是新任务的根活动时,此属性   确定任务是否不应出现在最近的列表中   应用。设置&#34; true&#34;如果任务应从列表中排除;组   &#34;假&#34;如果它应该包括在内。默认值为&#34; false&#34;。