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

前言

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

在你的启动页加入如下代码:

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.
     */
    public boolean isTaskRoot() {
        try {
            return ActivityManagerNative.getDefault().getTaskForActivity(mToken, true) >= 0;
        } catch (RemoteException e) {
            return false;
        }
    }

你可能感兴趣的:(Android 签名打包后的APP在后台运行时按icon导致程序重启的奇葩问题解决)