簡體   English   中英

設備后退按鈕與操作欄后退按鈕的活動生命周期差異

[英]Activity Lifecyle Difference in Device's Back Button vs Actionbar's Back Button

我目前正在學習活動生命周期。 我注意到以下內容:

  • 我有兩個活動,A和B。
  • 當我從活動A打開活動B時,A停止,B開始創建和啟動。
  • 當我按設備上的“后退”按鈕時,B銷毀,而A重新啟動。
  • 但是,當我改用Actionbar的Back / Up Botton時,B被破壞,A被破壞,然后調用onCreate()。

在ActionBar中使用向上彈鍵時,為什么要銷毀A而不是重新啟動?

我希望我的問題很清楚,否則請發表評論。

設備的“后退”按鈕實際上使您返回(返回上一個活動)。 動作欄的后退按鈕類似於“上移”按鈕(在應用程序的層次結構內)。 這就是為什么操作欄的后退按鈕不會將您帶到應用程序之外,而設備的后退按鈕會繼續將您帶到應用程序之外,甚至在應用程序之外。 操作欄存在於您的應用程序中,因此它遵循活動的生命周期方法,並在您每次返回時從頭開始,而設備從停止位置重新啟動。

編輯:

“后退”按鈕出現在系統導航欄中,用於按時間倒序瀏覽用戶最近使用過的屏幕的歷史記錄。 它通常基於屏幕之間的時間關系,而不是應用程序的層次結構。

在這里閱讀更多

當您按下BACK按鈕時,這將在當前Activity調用onBackPressed() 該方法的(如果在沒有覆蓋的默認行為Activity )是調用finish()Activity 這樣就完成了Activity並恢復了其下面的Activity

UP按鈕使用具有如下所示的Intent調用startActivity()

Intent intent = new Intent(this, TargetActivityForUpButton.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

此代碼會將堆棧中的所有活動移回TargetActivityForUpButton ,包括TargetActivityForUpButton 然后,它將創建TargetActivityForUpButton的新實例並啟動該Actvity (您將在Activity上看到onCreate()onStart()onResume()

另請參見https://developer.android.com/training/implementing-navigation/ancestral中的 “導航至父級活動”部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM