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

2017-08-19  本文已影响282人  微风细雨007

参考>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;
}

上一篇下一篇

猜你喜欢

热点阅读