Android——Activity中的isTaskRoot()方法作用

我们先打开一个App,然后升级完成后(或者是在开发过程中先运行App,然后再安装完成一个app时)。在安装界面直接点击打开。我们进入了app的首页,这时我们按home键返回桌面,再点击应用图标,会发现没有直接进入首页,而是先进入了app的闪屏页,在进入首页。这是因为应用安装完成后打开应用出现初始化两次。

但是如果一开始安装完我们不是直接打开,而是在桌面点击应用进入就不会这样了。
解决方案:在启动Activity(通常是启动页所在的activity,比如SplashActivity)的onCreate方法中进行判断是否重复启动,防止重复创建的问题,第一次安装完成启动,和home键退出点击launcher icon启动会重复

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

我们可以用上面的方法来判断该Activity是否为任务栈中的根Activity,即启动应用的第一个Activity。如果不是,那么就直接关闭当前activity不继续往下走。也就是A->B->C-A->B->C这个循环中,我们直接在第二个A的地方作上述判断,如果不是应用启动的第一个,就结束,回到先前的界面去。

原创文章 118 获赞 149 访问量 9万+

猜你喜欢

转载自blog.csdn.net/haoyuegongzi/article/details/104118525
今日推荐