情景:app
一、下載apk到手機本地,點擊本地apk開始安裝spa
二、安裝完成後,通常會有 「完成」 和 「打開」 兩個按鈕,點擊 「完成」 按鈕時是沒有問題的,無論它code
三、點擊 「打開」 按鈕,進入到首頁(好比MainActivity),打開其餘頁面(好比GameActivity),而後按下Home鍵blog
四、返回桌面後,再次點擊桌面上的app圖標get
解決方法:it
網上都是說將第二個頁面的launchMode屬性設置爲singleTask,好比說有兩個頁面,第一個是登陸界面,第二個爲主界面,將主界面的啓動模式設置爲singleTask,這樣雖然按照以前的操做流程,在第二次打開應用,進到主界面的時候,只有一個,可是這樣每次都要到登陸界面再到主界面,狀況雖然有所改善,但仍是沒有完美解決。io
下面介紹一種比較好的處理方法:class
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 int flag=getIntent().getFlags(); 4 System.out.println("getFlags---"+flag+"------"+(flag&Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)); 5 if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { 6 finish(); 7 return; 8 } 9 }
在手機上按照情景描述那樣操做,能看到下面的輸出。第一行表示正常打開時 flag 標誌是268435456,Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT 標誌是0;第二行表示從新打開app的結果,很明顯 Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT 標誌再也不是0,因此咱們在setContentView()以前直接finish掉它或者執行onResume()方法來恢復以前的頁面。test
另外也能夠檢查一下另外一個標誌:FLAG_ACTIVITY_RESET_TASK_IF_NEEDED。這個沒使用過,沒什麼體會,僅供參考吧!登錄
參考資料:How to return to the latest launched activity when re-launching application after pressing HOME