android开发之activity中 isTaskRoot()方法的使用场景及作用

大家都知道Android中的所有actvity的启动和都会保存在一个栈里面,正常来说启动一个app就是A->B->C这没有啥问题,但是在开发过程中,安装完成一个app时,在安装界面直接点击打开。我们进入了app的首页,这时我们按home键返回桌面,再点击应用图标,会发现没有直接进入首页,而是先进入了app的闪屏页,在进入首页。重复这一步一直如此。这时我们按back键返回,发现栈里面是A->B->C-A->B->C.
但是如果一开始安装完我们不是直接打开,而是在桌面点击应用进入就不会这样了。在应用市场下载了部分应用,也有一些有同样的问题。
而我们今天要说的isTaskRoot()这个方法主要就是为了处理这个问题来的,isTaskRoot这个方法主要就会判断当前activity是不是栈中的第一个activity,如果遇到以上的问题可以通过一下代码来处理

if (!isTaskRoot()) {
    Intent intent = getIntent();
    String action = intent.getAction();
    if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && action != null && action.equals(Intent.ACTION_MAIN)) {
        finish();
        return;
    }
}

你可能感兴趣的:(android开发之activity中 isTaskRoot()方法的使用场景及作用)