Android 签名打包后的APP在后台运行时按icon导致程序重启的奇葩问题解决

在正式签名打包的Android应用中,程序后台运行时点击图标会从 splash 页面重启,而非继续先前状态。该问题是由于 Studio 打包导致。解决方案是在启动页的 onCreate 方法中添加 isTaskRoot() 判断,若当前页面不是任务栈最早活动页面,则关闭并返回,以显示任务栈顶部的页面。
摘要由CSDN通过智能技术生成

前言

公司项目在完结时遇到一个问题,用正式签名打包后进行测试发现,在程序正常运行时按下home键返回桌面,此时再点击APP的icon并不会回到之前的状态,而是会从splash页开始重启程序,而从任务列表里打开APP则无此问题,在debug签名下也并没有遇到这个问题.后来查了查据说这是studio打包的bug.解决方法如下

在你的启动页onCreate方法中加入如下代码:

if (!isTaskRoot()) {
            finish();
            return;
        }

isTaskRoot()是判断当前activity是否是当前任务栈中的最早的(最后一个)activity,是返回true,否则返回false.

我的理解是如果第一页不是任务栈中的最初的activity则说明任务栈之前已经存在,则finish掉当前页并return,此时则显示出当前任务栈最上层的activity,如果理解有误,还请各位朋友评论中指导下~~.

这是isTaskRoot()方法及注释

/**
     * Return whether this activity is the root of a task.  The root is the
     * first activity in a task.
     *
     * @return True if this is the root activity, else false.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值