Android从最近任务列表删除当前activity

2019-09-11 11:08:00  阅读 16502 次 评论 0 条

如何让Activity不显示在系统的最近任务列表中

最简单的做法,在AndroidManifest.xml的Activity标签中加入excludeFromRecents属性,并设置为true,不加时默认值为false。

<activity
    
    android:excludeFromRecents="true"
    />
<activity

此属性生效范围,经过验证得出以下结果:A、B、C均表示Activity,测试手机红米7

  • 仅A设置excludeFromRecents为true,A启动B,则A、B都不显示在最近任务中

  • 即使B 加上了taskAffinity属性,直接 startActivity(new Intent(context, B.class),B依然不显示

  • A启动B时,加上Intent.FLAG_ACTIVITY_NEW_TASK标记,最近任务只有B

  • 仅给B设置excludeFromRecents为true,A启动B,A、B的缩略图会出现在最近任务中


也可在Intent中添加标记,效果相同

intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);


此种方法有一点不好的地方就是,按了HOME键之后,Activity是完全不显示在最近任务中,即使它还在运行。

而我当前的需求是,运行的时候要在,finish之后移除。而系统默认情况下finish、killProcess,应用窗口缩略图依然会保留在最近任务中。

高级玩法:使用finishAndRemoveTask()将自己移除最近任务。需要SDK 21以上

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    finishAndRemoveTask();
} else {
    finish();
}


本文地址:http://bloguan.com/?id=547
版权声明:本文为原创文章,版权归 博观网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?