簡體   English   中英

Activity.finish()如何在Android中運行?

[英]How does Activity.finish() work in Android?

有人可以提供一個Activity調用其finish()方法時會發生什么的描述嗎?

它會立即退出,還是完成調用它的函數?

它是立即退出還是完成調用它的函數?

調用finish()的方法將運行完成。 在將控制權返回給Android之前, finish()操作甚至不會開始。

每個生命周期事件,如onCreateonResumeonPause .... onDestroy的Activity總是在一個線程上調用 - “主線程”。

簡而言之,該線程由Queue支持,所有活動事件都將發布到該Queue中。 該線程可以按插入順序執行所有這些事件。

如果你在其中一個生命周期回調中調用finish() ,比如onCreate() ......一個“完成”消息將被添加到這個隊列,但是線程不能自由選擇並執行“完成”動作,直到當前執行方法返回,即Thread從當前任務中釋放。

ondestroy()是在您的活動被銷毀之前收到的最后一個電話。

這可能是因為活動正在完成(有人稱為finish() ,或者因為系統暫時銷毀此活動實例以節省空間。您可以使用isFinishing()方法區分這兩種情況。

如果有兩個活動A和B.你的流量來自A> B; 和B = A調用finish()

然后,

您調用finish()的方法將按Mark提到的方式執行。 回調流程如下 -

  1. activity A onPause()
  2. onRestart() > onStart() >活動B的onResume()
  3. 然后,真正的區別來了。 如果你沒有從activity A調用finish() ; 此處僅onStop() Activity A onStop() 而在這種情況下,我們從Activity A調用finish() ; 因此onStop()onDestroy()都將被調用為activity A

暫無
暫無

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

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