0

我的應用程序在清單推出-mode屬性=「singleTop」和處理它通過與getIntent推出的意圖()。處理意圖後,它調用setIntent(new Intent());以抹去原意。這可以避免活動處理同一意圖(如果再次創建)(例如,如果管理方向更改)。如何從「最近的應用程序」插槽中刪除最初的意圖?

我只是有問題的時候,當我按下返回按鈕的活動被破壞:的確,當我點擊它的「最近使用的應用」插槽活動再次創建和我再次處理的原意。 如果我從主屏幕再次調用應用程序,沒有原意。

需要注意的是:

  • 應用必須在「最近使用的應用」菜單中看到;
  • 活性可以得到進一步的意圖(它的「singleTop」),並處理它們在onNewIntent();
  • 如果活動被破壞它可以再次與意圖開始; 如何從「最近的應用程序」插槽中刪除最初的意圖?
+0

看看這個鏈接,看看它是否有幫助:http://stackoverflow.com/a/25535915/1970641。我還評論了接受的答案,並且您可能有興趣閱讀它。 – 2014-09-24 12:22:29

+0

這是一個已知的問題/功能。看到這裏我的答案:http://stackoverflow.com/a/19820057/769265 – 2017-03-08 18:15:31

回答

0

您不應該再次執行諸如啓動活動之類的操作,只能刪除活動創建參數(意圖)。這是默認的Android系統行爲,以保持與其創建的Intent。

在創建標誌boolean dataHandled你可以繞過這一點。在您處理第一次意圖後,請設置dataHandled = true。當然,不要忘記在onSaveInstanceState呼叫中保存此值。

protected void onCreate(Bundle savedInstanceState) { 
    if(!savedInstanceState.containsKey("dataHandled") { 
     //handle IntentData 
    } 
} 

protected void onSaveInstanceState(Bundle outState) { 
    outState.putBoolean("dataHandled", true); 
    super.onSaveInstanceState(outState); 
} 
+0

我不認爲調用setIntent()重新開始活動。 – P5music 2014-09-24 12:14:14

相關問題