6

问题描述

在我的一个应用程序中,我看到了非常奇怪的行为:当我的应用程序在前台运行(是最上面的一个)时,我可以在系统的“最近”中看到它的活动。但是,一旦我把它放到后台,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" />

    ...

发现

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

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

问题

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

4

1 回答 1

9

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

来自android:excludeFromRecents的引用:

此活动启动的任务是否应从最近使用的应用程序(“最近的应用程序”)列表中排除。也就是说,当这个activity是一个新任务的根activity时,这个属性决定了这个task是否不应该出现在最近的应用列表中。如果该任务应从列表中排除,则设置为“true”;如果应该包含它,则设置为“false”。默认值为“假”。

于 2014-07-08T09:36:48.637 回答