Android点击home键重启的解决

问题描述: 
当App在第一次安装后,打开app,然后再点击home键,当再次点击桌面的icon时,发现app重启,重新回到了首页,并且每点击一次icon,就会在activity的Task中多出一个首页,在连续按返回键将所有首页清除掉后,此问题消失。或者在杀掉该app后再次进入,此问题消失。 
问题分析: 
经过一天的查找分析,在第一个安装后,activity管理栈似乎对进入的activity不做任何判断与标记(是否是栈顶的activity),每次都会入栈,在将栈清空后又回复正常(就是Task对activity做记录了,哪个处于栈顶,是否在栈里等)。 
问题非常奇怪,在第一个安装后,点击icon,都会生产一个新的首页,不会用已存在在栈中的首页替换,直接就入栈了 
如果有高人对此通透,还望指点一二! 
问题解决: 
通过不断尝试与搜索,该问题解决: 
代码如下

解释一下: 
isTastRoot:判断该Activity是否是所在Task的顶部的activity,即是Task的Root,如果是返回true,否则返回false; 
然后获得Intent,

mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER)&&action.equals(Intent.ACTION_MAIN)

判断该activity是否在默认的任务栈中。 
在mianfest中我们会设置启动的activity,其中categroy为category_launcher,action为action_main,在这里,以后默认的activity都会在启动activity所在的任务栈里(默认的,当然也可以使用自己命名的任务栈,一般不会)。 
如果不是从Task中取出的(已存在Task中的),而是系统新生成的(没有回复Task中的),那么就finish掉,然后return;结束这种不正常。避免出现异常。 
在启动activity的super.onCreate后添加以上代码,即可解决Android点击home键重启的问题! 
在此已做记录!

猜你喜欢

转载自blog.csdn.net/qq_34979546/article/details/81741641
今日推荐