2012-06-29 32 views
1

我的應用程序被設計爲作爲單個實例運行,而後退按鈕不允許您退出應用程序並返回到「開始」屏幕,因爲它在內部用於導航每個屏幕都可以成爲活動的屏幕層次結構。在正常情況下返回使用後退按鈕調用客戶端後退被禁用

但是,外部應用程序可以啓動應用程序的內部活動之一。當用戶完成了設計的任何活動後,用戶的直觀操作就是點擊後退按鈕返回到調用客戶端。但是因爲我阻止退出按鈕退出,用戶無法返回。

當代碼檢測到客戶端正在啓動活動時,我可以添加代碼來覆蓋此代碼。但問題是,如果應用程序關閉返回,用戶可能會從他們離開的地方返回到應用程序。但是,由於我關閉了應用程序以返回到調用客戶端,因此用戶無法返回到上次打開的應用程序。我的應用程序需要保持爲單個實例,因此啓動的活動不能多次創建。關於如何返回到調用客戶端的任何建議,但也保持應用程序運行,如果它正在運行時,調用客戶端使用它的一個活動?

回答

0

通常,您可以通過編程控制後退導航軌跡。看看 TaskStackBuilder和處理通知Responding to Notifications的文檔。看起來你想要做的是控制所謂的「後退堆棧」。如果您使用TaskStackBuilder,行爲將與您所在的平臺版本匹配。

在3.0之前的平臺中,後退按鈕一直穿過後退堆棧,直到用戶開機後的第一個任務。 3.0後,不返回任務邊界;爲了完成其他任務,用戶點擊「最近項目」圖標。在應用程序中還有「向上」圖標可導航到應用程序內任務的「開始」。 TaskStackBuilder將爲所有版本「做正確的事情」。

在當前平臺版本中,不允許Back退出您的應用程序是可以的,因爲Back應該只轉到當前任務中的第一個Activity。在3.0之前的版本中,不允許Back退出應用程序會產生更多問題,我個人不會那樣做,但這取決於您。

當用戶在Intent啓動您的應用程序後單擊Back時,會發生什麼情況應該從我引用的文檔中明確。基本上,你想要做的是回到上一個任務。

+0

謝謝,我會研究TaskStackBuilder。很顯然,在3.0版之前的版本中,在您的應用程序的根本任務中點擊後退按鈕,然後退出應用程序並不是一件很酷的事情,這就是Google改變它的原因。對於沒有屏幕層次結構但屏幕層次結構中的簡單屏幕應用程序可能是可以接受的,用戶將希望Back按鈕將它們帶到其根屏幕並且不會退出。 – AndroidDev