1.問題簡介
首先描述一下問題,當我們安裝完APP的時候,界面會顯示兩個按鈕,一個完成鍵,一個Open鍵,點擊Open鍵之後,進入應用。此時,我們點擊HOME鍵,程序將會後台。然後再點擊該桌面上應用程序的圖標,巨大的BUG出現了:app會重新啟動!而不是將原來的界面onresume!如果你的應用對多次啟動不敏感,這道沒什麼,但是,如果你的應用對多次啟動很敏感,你就必須做處理了。
2.解決方案
首先分析問題成因,在Android目前的系統下(最新的為4.4.3),點擊Open鍵和點擊圖標啟動時,Intent的參數傳遞的不一樣,activity的啟動方式不同,導致上述問題的產生。但是,由於啟動參數由系統設定,我們不好改變。那我們的思路就有兩個:
1.第二次啟動的時候,把第一次啟動的殺掉
2.第二次啟動的時候,將第一次啟動的Activity喚醒,第二次啟動關閉。
一般我們選擇第二種,因此,我們就有了如下思路:
1.在啟動第一個Activity的時候,判斷啟動方式是不是從點擊OPEN鍵啟動的.
2.在需要喚醒的activity中注冊BroadcastReceiver,接收到廣播之後,調用自己的onResume方法。
第一個Activity的onCreate方法中添加的代碼如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
// 在這裡發送廣播,喚醒之前啟動的Activity
finish();
return;
}
// Regular activity creation code...
}
問題得到完美解決。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11