问题描述
我的一个应用程序出现了奇怪的行为:当我将应用程序置于前台(最顶部),然后可以在系统的“最近使用”的列表中看到它的活动。但是一旦我将其放到后台,同一活动(即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
,以确保我没有调用任何可能影响“最近使用”的内容。但是并没有发现任何问题。
然后我开始剥离清单文件,看看是否会有什么变化。正如预期的那样,罪魁祸首就潜藏在那里,但我不太清楚为什么会这样。起初,清单中的AccountsActivity
条目根本没有android:excludeFromRecents
条目 - 这导致AccountsActivity
根本不可见。当我添加了android:excludeFromRecents="true"
时,该活动在“最近使用”中变得可见,但只有当它在前台时才会出现。当我移到后台时,它就从“最近使用”中消失了。当我从StartActivity
声明中删除android:excludeFromRecents="true"
时,无论应用程序是在前台还是后台,AccountsActivity
都会在“最近使用”中可见,并且我也可以完全删除其条目中的android:excludeFromRecents
而不会出现任何问题。
问题
目前,我正在努力理解为什么它会表现出这样的行为 - 这是正常的(而我不知道某些东西)还是框架中的错误呢?是否有人遇到过类似的问题,并可以分享经验、想法或解释?
android:launchMode="singleTask"
- 只是从StartActivity
中删除了excludeFromRecents
,现在一切都正常工作。这就是为什么我现在处于WTF模式的原因。 - Marcin Orlowskiandroid:excludeFromRecents="true"
可能会导致这种行为。你能发布启动AccountsActivity
的意图吗? - ozbek