Android 按hong键,无法存活mainActivity,无限重启的修复

本文详细介绍了在某些手机上遇到的Android应用重启问题及其解决方法。通过对Activity管理栈的深入分析,找到了导致APP异常重启的原因,并提供了一段实用的代码来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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键重启的问题! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值