美文网首页基础
android开发之activity中 isTaskRoot()

android开发之activity中 isTaskRoot()

作者: 雨田Android开发 | 来源:发表于2019-06-12 15:17 被阅读0次

    大家都知道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()

        本文链接:https://www.haomeiwen.com/subject/oxslfctx.html