前言
公司项目在完结时遇到一个问题,用正式签名打包后进行测试发现,在程序正常运行时按下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;
}
}
网友评论