在开发的过程中,我们肯定会遇到这样的问题:不希望或者不需要应用或者页面出现在最近打开程序列表中。比如:

应用:
  1. 一键锁屏应用,点击应用图标,锁屏,结束应用
  2. 一些比较私密的应用程序,这个你懂得
页面:
  1. 一些应用支持第三方授权登录,授权页不应该出现在最近打开程序列表中
  2. 应用通过浏览器打开地图或者是其他的网页,浏览器不应该出现在最近打开程序列表中
  3. 关于页面,其实就是那些“中间页面”,就是那些用户无法直接进入的页面,都应该考虑要不要出现在最近程序列表中。

其实Android本身对此有很好的支持,只是目前很多应用并没有用到,可以说很大部分的开发者也没注意到这个问题。

方法一

设置启动的flags

/**
* If set, the new activity is not kept in the list of recently launched
* activities.
 */
public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 0x00800000;


        Intent intent = new Intent(this, WaitingFallBackDialog.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        startActivity(intent);

方法二

AndroidManifest.xml中activity标签下加android:excludeFromRecents =“true"即可。

方法三

这个其实是方法一的延伸,以及对现状的改善。对于别人已经发布的应用,我们没有办法改变其内部行为。如果不想自己打开的应用出现在最近应用列表中的话,可以自己做一个app来启动那些应用,intent指定flag:

intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

以下是我写一个实现:https://raw.github.com/laomo/Starter/650d1c06f5f8a35c7ec8ec2a45d0659d5e71c0b6/Starter.apk

源码:https://github.com/laomo/Starter