前言
公司項目在完結時遇到一個問題,用正式簽名打包后進行測試發現,在程序正常運行時按下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;
}
}