美文网首页
防止应用初始化2次,方法isTaskRoot()

防止应用初始化2次,方法isTaskRoot()

作者: 微风细雨007 | 来源:发表于2017-08-19 10:39 被阅读282次

    参考>http://m.blog.csdn.net/u010019468/article/details/72853663

    应用安装完成后打开应用出现初始化两次
    是指在调用系统安装应用程序完成安装之后,若用户直接通过这个程序打开应用进入之后,用户按home键退出回到桌面应用程序列表,又点击该应用的icon重新进入该应用,却发现应用是重新打开,而不是继续上次离开的界面,按道理应用不应该重新初始化,后面经搜索发现这是个系统bug。

    解决方案:在启动Activity onCreate方法中进行判断是否重复启动

    防止重复创建的问题,第一次安装完成启动,和home键退出点击launcher icon启动会重复

    if (!isTaskRoot()
    && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
    && getIntent().getAction() != null
    && getIntent().getAction().equals(Intent.ACTION_MAIN)) {
    finish();
    return;
    }
    详细分解
    摘自>http://www.jianshu.com/p/8ed8e2050b34
    判断该Activity是不是任务空间的源Activity,“非”也就是说是被系统重新实例化出来,如果你就放在launcher Activity中话这里可以直接return了
    if(!this.isTaskRoot()) {
    Intent mainIntent=getIntent();
    String action=mainIntent.getAction();
    if(mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && action.equals(Intent.ACTION_MAIN)) {
    //finish()之后该活动会继续执行后面的代码,你可以logCat验证,加return避免可能的exception
    finish();
    return;
    }
    }
    部分机型有用
    if ((getIntent().getFlags()& Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)!=0)
    {
    finish();
    return;
    }

    相关文章

      网友评论

          本文标题:防止应用初始化2次,方法isTaskRoot()

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