我對活動的工作方式有些困惑。如果我通過按一個按鈕來做StartActivity()
,然後我按下返回按鈕返回到原始活動,然後再次按下按鈕以執行相同的操作StartActivity()
,是否有兩個新活動的實例?我知道每次都會調用onCreate()
,所以第一個實例是孤兒(可能最終垃圾收集)?StartActivity和多個實例
我是否應該始終確保finish()
被調用(通過後退按鈕),以保證安全?我不確定這裏的協議是什麼。
我對活動的工作方式有些困惑。如果我通過按一個按鈕來做StartActivity()
,然後我按下返回按鈕返回到原始活動,然後再次按下按鈕以執行相同的操作StartActivity()
,是否有兩個新活動的實例?我知道每次都會調用onCreate()
,所以第一個實例是孤兒(可能最終垃圾收集)?StartActivity和多個實例
我是否應該始終確保finish()
被調用(通過後退按鈕),以保證安全?我不確定這裏的協議是什麼。
從Android開發網站(source):
的應用程序通常由鬆散地相互結合多種活動。通常,應用程序中的一項活動被指定爲「主要」活動,這是第一次啓動應用程序時向用戶呈現的。然後,每項活動都可以開始另一項活動,以便執行不同的操作。 每次新活動開始時,先前的活動都會停止,但系統會保留堆棧中的活動(「後退堆棧」)。當一個新的活動開始時,它會被推到後面的堆棧並且獲得用戶焦點。後退堆棧遵循基本的「後進先出」隊列機制,因此,當用戶完成當前活動並按下BACK鍵時,它將從堆棧中彈出(並銷燬),並恢復前一個活動。 (後退堆棧在任務和返回堆棧文件更多討論。)
(由我加粗)
這頁是特別有趣,瞭解它的工作原理在詳細信息的方式:
在一個相關的問題上,是否有辦法彈出堆棧中的第一個活動,即跳到「主頁」活動的所有路徑? – 2012-01-08 14:40:53
http://stackoverflow.com/questions/5193494/how-to-finish-multiple-activities-on-a-button-click - 就我個人而言,我使用onActivityResult鏈接(使用StartActivityForResult開始您的活動,並在onActivityResult中設置相應的狀態,所以你可以在需要的時候完成它們) – Guillaume 2012-01-08 19:32:25
如文檔所述,
public void onBackPressed()
由於:API級別5當活動檢測到用戶按回撥鍵 時調用。默認實現只是完成當前活動, 但您可以重寫此操作以執行任何您想要的操作。
上按返回鍵的默認實現將調用finish()
當前的活動
你覆蓋'onKeyDown'與處理'KEYCODE_BACK',或者你按下快按鈕,這導致兩個活動啓動。 – dreamtale 2012-01-08 14:26:12