Android点击home键重启的解决

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

if(!this.isTastRoot()){
    Intent mainIntent = getIntent();
    String action = main.getAction();
    if(mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER)&&action.equals(Intent.ACTION_MAIN)){
        finish();
        return;
    }
}

解释一下:
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键重启的问题!
在此已做记录!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值