1. 程式人生 > >Android 簽名打包後的APP在後臺執行時按icon導致程式重啟的奇葩問題解決

Android 簽名打包後的APP在後臺執行時按icon導致程式重啟的奇葩問題解決

前言

公司專案在完結時遇到一個問題,用正式簽名打包後進行測試發現,在程式正常執行時按下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.
     */
public boolean isTaskRoot() { try { return ActivityManagerNative.getDefault().getTaskForActivity(mToken, true) >= 0; } catch (RemoteException e) { return false; } }