1,原因。
在某些手机上,你通过外部intent跳转打开app的时候,这个时候按home键,当再次点击桌面的icon时,发现app重启,重新回到了首页,并且每点击一次icon,就会在activity的Task中多出一个首页,在连续按返回键将所有首页清除掉后,此问题消失。或者在杀掉该app后再次进入,此问题消失。
2.排查
其中也尝试过,设置启动模式,配置存活,然后都无效果
经过两天的查找分析,在第一个安装后,activity管理栈似乎对进入的activity不做任何判断与标记(是否是栈顶的activity),每次都会入栈,在将栈清空后又回复正常(就是Task对activity做记录了,哪个处于栈顶,是否在栈里等)。
3.解决办法,在指定为启动页的Activity,oncreate方法中加入这个代码
if(!this.isTaskRoot()){
Intent mainIntent = getIntent();
String action = mainIntent.getAction();
if(mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER)&&action.equals(Intent.ACTION_MAIN)){
finish();
return;
}
}
判断该activity是否在默认的任务栈中。
在mianfest中我们会设置启动的activity,其中categroy为category_launcher,action为action_main,在这里,以后默认的activity都会在启动activity所在的任务栈里(默认的,当然也可以使用自己命名的任务栈,一般不会)。
如果不是从Task中取出的(已存在Task中的),而是系统新生成的(没有回复Task中的),那么就finish掉,然后return;结束这种不正常。避免出现异常。
在启动activity的super.onCreate后添加以上代码,即可解决Android点击home键重启的问题!