簡體   English   中英

澄清Android活動onPause和onRestart

[英]Clarification Android Activity onPause and onRestart

我對Android中的活動生命周期有疑問。 當我有這樣的代碼時(使用正確的名稱)

 newActivityButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), NextActivity.class);
                intent.putExtra("Info",correctInfo);
                startActivity(intent);
            }
        });

然后,“ NextActivity”進入前台。 但這是否意味着“ MainActivity”已停止? 根據下圖,“ MainActivity”不再可見,因此也停止了嗎?

編輯:如果我有3個活動鏈,該怎么辦。 第一個仍然沒有銷毀嗎?

活動生命周期圖

僅當您使用finish()或相關方法隱式完成活動時,或者如果出於某種必要原因(大多數情況下,與設備的內存不足相關的活動),活動將被銷毀,而系統在后台將其殺死。 如果之前的任何事件均未發生,則在后台進行的活動將達到其生命周期的onStop()狀態,直到再次回到前台為止,如圖所示。

因此,如果您遇到以下問題,請回答您的問題:

A-> B-> C如果您不對它們中的任何一個進行調用,並且系統沒有終止任何后台活動,則A和B都將停止,但不會被破壞。

當MainActivity變得不可見並且另一個活動進入前台時,它將立即停止。 如果一系列活動接連啟動,則所有活動都將處於停止狀態(除非系統銷毀該活動以釋放內存和資源)。

請閱讀有關后退堆棧和任務管理的本文

在android中,活動或任務(活動的集合)以堆棧的形式排列,稱為“后堆棧”。

當當前活動啟動一個新活動時,新活動將被推到堆棧的頂部並獲得焦點。 先前的活動也保留在堆棧中,但是它處於停止狀態,而系統保留了其用戶界面的狀態,因此可以恢復它。 同樣,如果此新活動再次創建另一個活動,則新創建的活動將到達堆棧頂部,而當前活動將變為停止狀態。

按下后退按鈕后,最上面的活動將完成並從堆棧中彈出,並且堆棧中的下一個活動將以已保存的實例狀態繼續進行,因此感覺就像恢復了它的原處。

對於一個鏈,假設您有三個活動,A,B和C。A啟動B,B啟動C。因此,當C處於焦點位置時,您的A和B活動將處於停止狀態(但仍處於后退狀態)。 您可以在C上按后退並繼續B,然后在B上按后退並繼續A。如上所述,一旦按下后退,當前活動將從堆棧中彈出並完成。

通過我在頂部共享的同一網址:

注意:可以一次在后台執行多個任務。 但是,如果用戶同時運行許多后台任務,則系統可能會開始破壞后台活動以恢復內存,從而導致活動狀態丟失。

暫無
暫無

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

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