2016-06-12 29 views
1

在我的應用程序開始我有3個活動:Android的後退按鈕可能發生不可預知的活動從意向

  • MainActivity,這是啓動應用程序
  • SettingsActivity,這是從開始時出現的主屏幕MainActivity
  • DownloadActivity,它從SettingsActivity開始。

DownloadActivity提供了一個供用戶下載的應用內容列表。實際下載由Android的DownloadManager處理,它顯示正在進行下載的通知。點擊該通知將觸發一個意圖,這將使用戶DownloadActivity

現在,如果我做到以下幾點:

  1. 啓動應用程序,去SettingsActivity,從有到DownloadActivity

  2. 開始下載,然後回撥兩次以返回MainActivity

  3. 拉下通知並點擊下載通知,這會將我帶回DownloadActivity

  4. 回擊。

  5. 重複步驟3和4兩次。

我第一次執行步驟4,後退按鈕會帶我直接從DownloadActivityMainActivity - 最後一個活動的應用程式顯示我打的通知之前,這是我想要的。

然而,第二次後退按鈕將在當前屏幕下方顯示第二個DownloadActivity,我需要第二次返回以返回MainActivity

第三次,有4個DownloadActivity實例的堆棧,要求按四次Back按鈕才能返回到MainActivity

,處理自來水的代碼如下:(activity是賴以起家的下載活動的引用)

Intent downloadIntent = new Intent(activity.getApplicationContext(), downloadActivity.class); 
downloadIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
activity.getApplicationContext().startActivity(downloadIntent); 

是什麼原因造成這種奇怪的行爲,並哪能使後退按鈕始終返回到應用程序顯示的最後一個活動?

回答

0

這原來是一個容易的。這個變化的確有訣竅:

- downloadIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
+ downloadIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);