问题描述
在我的一个应用程序中,我看到了非常奇怪的行为:当我的应用程序在前台运行(是最上面的一个)时,我可以在系统的“最近”中看到它的活动。但是,一旦我把它放到后台,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 文件,看看是否会发生变化。正如预期的那样,罪魁祸首潜伏在那里,我仍然不清楚为什么。一开始,AccountsActivity
Manifest 中的条目根本没有android:excludeFromRecents
条目 - 这导致在最近的条目中AccountsActivity
根本不可见。当我添加时android:excludeFromRecents="true"
,该活动在“最近”中变得可见,但仅当它位于前面时。当我移到后面时,它从“最近”中消失了。当我android:excludeFromRecents="true"
从StartActivity
声明中删除时,AccountsActivity
无论应用程序是在前面还是在后台,都可以在“最近”中看到,我也可以android:excludeFromRecents
完全从它的条目中删除,没有任何问题。
问题
目前,我正在低头试图理解为什么这一切都是这样的——这是正常的(而且我不知道)还是可能是框架中的错误?任何人都遇到过类似的问题,可以分享经验、想法或解释吗?