2013-07-20 22 views
0

主要活動創建一個快捷方式到主屏幕,一切都不錯,但需要知道的額外的價值,當它開始通過快捷方式。所以我用這個在創建快捷方式如何知道是否恢復活動通過快捷方式,或通過其他頂級活動

intent.putExtra(EXTRA_ID, "Some string info here"); 

而且onResume檢索這樣

if (getIntent().hasExtra(EXTRA_ID)) 
    ShowToast(getIntent().getExtras().getString(EXTRA_ID)); 

一切正常價值,讓我們一些例子

  1. 活動從未推出,主屏幕上的快捷方式壓制和出現敬酒,尼斯。
  2. 活動在後臺,主屏幕快捷鍵被按下,出現烤麪包,尼斯。
  3. 活動正在使用中,另一個活動啓動,當時,吐司出現,不好。
  4. 活動在沒有額外的快捷按鈕的背景下,沒有任何顯示。

在第三個例子,它做什麼,它該做的。但是,我怎麼知道快捷方式是否恢復/啓動活動?

+1

使用額外的一次。第一次onResume後刪除額外。 – faylon

+0

是的,但現在我有另一個問題。添加了第四個案例 – xmen

回答

1

您可以設置在發射意向額外的,並希望在此活動在任何狀態下打開,以獲得額外的。

問題你滿足:

活動是在後臺,沒有額外的,按下快捷鍵,沒有 出現。

這是因爲您的活動已經開始,發射器意圖只是將現有任務用作前端任務,並且在這種情況下其額外數據會丟失。

爲了解決這個問題,你需要兩個步驟:

  1. 添加android:launchMode="singleTask"這項活動在您的清單。
  2. 把額外的數據處理代碼中都onCreate()onNewIntent(),而不是在onResume()
+0

工程完美,但無需更改launchMode。只需使用'onNewIntenet'並以新的意圖調用setIntent()。 – xmen

1

你如何刪除多餘的EXTRA_ID?你應該這樣做,如:

onResume()

if (getIntent().hasExtra(EXTRA_ID)) { 
    ShowToast(getIntent().getExtras().getString(EXTRA_ID)); 
    getIntent().removeExtra(EXTRA_ID); 
} 
+0

刪除確實解決了第三種情況,但它創建了另一個。如果應用進入後臺並按快捷鍵,則不顯示任何內容。 – xmen

+0

@ xmenW.K。你需要重寫'onNewIntent()'方法(就像faylon在他的回答中提到的那樣),並將if塊放入其中。 – Vikram