点击APP图标重新启动程序,无法返回之前操作页面的解决方法

本文介绍了解决APP重启后无法返回之前操作页面的问题,提供了两种方法:一是通过检查是否为任务栈顶Activity并finish;二是配置Activity的launchMode为singleTask。这两种方法适用于希望在APP重启时保持用户状态的场景。

测试的例子中有三个activity,启动顺序为SplashActivity-LoginActivity-MainActivity。点击APP图标重新启动程序,无法返回之前操作页面,这个现象在Realese版本出现,debug版本不出现。

https://github.com/qiantanlong/APPLaucherDemo

这个demo中验证了重新启动APP后的task任务栈的情况,有兴趣可以跑一下看看。

方法一:

在SplashActivity的onCreate方法中加入如下代码:建议使用这个

if (!this.isTaskRoot()) {
    Intent intent = getIntent();
    if (intent != null) {
        String action = intent.getAction();
        if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
            finish();
            return;
        }
    }
}

意思是如果打开的SplashActivity不是当前任务栈的栈顶Activity的话,就finish掉,展示在栈顶的Activity。这个么做的原因是,只要这个APP进程没有被销毁,切换到后台(暂时不销毁)后,即使再次重新启动SplashActivity,也不会重新创建任务栈,还是在原有任务栈中进行操作。

方法二:

在LoginActivity和MainActivity的AndroidManifest配置

android:launchMode="singleTask"

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值