![](/img/trans.png)
[英]Calling Activity.finish always recreates previous activity on Back Stack
[英]How does Activity.finish() work in Android?
有人可以提供一個Activity
調用其finish()
方法時會發生什么的描述嗎?
它會立即退出,還是完成調用它的函數?
它是立即退出還是完成調用它的函數?
調用finish()
的方法將運行完成。 在將控制權返回給Android之前, finish()
操作甚至不會開始。
每個生命周期事件,如onCreate
, onResume
, onPause
.... onDestroy
的Activity總是在一個線程上調用 - “主線程”。
簡而言之,該線程由Queue支持,所有活動事件都將發布到該Queue中。 該線程可以按插入順序執行所有這些事件。
如果你在其中一個生命周期回調中調用finish()
,比如onCreate()
......一個“完成”消息將被添加到這個隊列,但是線程不能自由選擇並執行“完成”動作,直到當前執行方法返回,即Thread從當前任務中釋放。
ondestroy()
是在您的活動被銷毀之前收到的最后一個電話。
這可能是因為活動正在完成(有人稱為finish()
,或者因為系統暫時銷毀此活動實例以節省空間。您可以使用isFinishing()
方法區分這兩種情況。
如果有兩個活動A和B.你的流量來自A> B; 和B = A調用finish()
。
然后,
您調用finish()
的方法將按Mark提到的方式執行。 回調流程如下 -
activity A
onPause()
onRestart()
> onStart()
>活動B的onResume()
activity A
調用finish()
; 此處僅onStop()
Activity A
onStop()
。 而在這種情況下,我們從Activity A
調用finish()
; 因此onStop()
和onDestroy()
都將被調用為activity A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.