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

Mar*_*ski 7 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" />

    ...
Run Code Online (Sandbox Code Playgroud)

发现

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

然后我开始删除Manifest文件以查看是否会发生变化.正如预期的那样,罪魁祸首潜伏在那里,但对我来说仍然不是很清楚.在开始时,AccountsActivityManifest中的android:excludeFromRecents条目根本没有条目 - 这导致在AccountsActivity根本不可见.当我添加时android:excludeFromRecents="true",活动在"最近"中变得可见,但只有当它在前面时才会显示.当我向后移动时,它从最近消失了.当我android:excludeFromRecents="true"StartActivity声明中删除时,AccountsActivity无论应用程序是在前面还是在后台,都可以在最近显示,我可以android:excludeFromRecents完全删除它的条目而没有任何问题.

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

Ela*_*man 9

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

引用来自android:excludeFromRecents:

是否应从最近使用的应用程序列表("最近的应用程序")中排除此活动启动的任务.也就是说,当此活动是新任务的根活动时,此属性确定该任务是否不应出现在最近的应用列表中.如果任务应从列表中排除,则设置为"true"; 如果应该包含它,则设置"false".默认值为"false".