活动excludeFromRecents在Android 5.0上无效

时间:2014-12-24 07:38:42

标签: android android-activity android-fragments

我正在尝试完成一项活动而不是最近的活动。以下代码似乎适用于KitKat,但不适用于lolipop,因为活动始终显示在最新版本上。

intentInvite = new Intent( context, OnInviteActivity.class );
intentInvite.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intentInvite.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentInvite = createInviteIntent( intentCloud, intentInvite );
context.startActivity( intentInvite );

的AndroidManifest.xml

<activity android:name=".OnInviteActivity"
          android:label="@string/app_name"
          android:excludeFromRecents="true"
          android:noHistory="true"

4 个答案:

答案 0 :(得分:3)

尝试添加唯一的taskAffinity:

<activity android:name=".OnInviteActivity"
          android:label="@string/app_name"
          android:taskAffinity=".OnInviteActivity"
          android:excludeFromRecents="true"
          android:noHistory="true"

答案 1 :(得分:3)

这是Android 5.0中的一个已知问题,因为L预览。似乎Google正在努力。

以下是相同的

的未决问题
  1. android:excludeFromRecents not works
  2. excludeFromRecents="true" not working in Android L

答案 2 :(得分:2)

https://stackoverflow.com/a/27633500/1269737 - 众所周知的Android问题。

这可以通过编程方式完成

ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
if(am != null) {
    List<ActivityManager.AppTask> tasks = am.getAppTasks();
    if (tasks != null && tasks.size() > 0) {
        tasks.get(0).setExcludeFromRecents(true);
    }
}

如果从最近排除了任务根活动,则此任务中的所有活动也将被排除。

答案 3 :(得分:0)

我遇到了与android Jelly Bean相同的问题,我在清单中有这个问题:

<activity android:name=".MainActivity"
          android:label="@string/app_name"
          android:excludeFromRecents="true"
          android:noHistory="true" />

我删除了android:noHistory="true"并且它有效,最近的应用程序停止显示我的活动。由于某种原因,noHistoryexecludeFromRecents看起来不兼容。