簡體   English   中英

Android Activity生命周期-onPause()和onResume()

[英]Android Activity life cycle - onPause() and onResume()

Android開發人員圖中 ,我看到onResume()總是在onPause()之前調用。 假設用戶開始一個新的Activity ,為什么在onPause()之前加上onResume()

我的意思是:

可以在兩種情況下調用OnResume:

1)用戶開始新活動時(在OnPause之前)

2)當活動處於后台並且用戶將活動帶回前台時

我希望在每種情況下都應該做其他事情。

你錯了。 每當創建活動時,就在onStart之后調用 onResume 每當您的活動返回時,都會調用onPause堆棧。 再次,如果您的活動回到前台,則會調用onResume 因此,它不像在onPause之前調用onResume一樣。 每當活動從onPause狀態返回時,都會調用onResume而不是onStartonCreate 發生這種情況是為了使Android不必一次又一次地創建Activity實例,盡管這些實例沒有被正確銷毀。 這也是相當有效的內存。

注意:如果您的應用程序正在運行,並且用戶按下“ 后退”按鈕或“ 主頁”按鈕,則“活動”將進入onPause()onStop()狀態。 此后,如果用戶再次回到您的應用程序, 則會依次調用onRestart()onStart()onResume()

那么,當活動僅處於onPause()狀態時? 對話框浮現在您的活動上方或您的活動在“拆分”屏幕中顯示但沒有焦點時(用戶未與您的應用進行交互) 在這些情況下,活動僅變為onPause()狀態。

總是在onPause()之前調用onResume() onPause()

這是對的。 在首次啟動活動,在onCreate之前首次啟動活動以及恢復活動時(用戶導航回到您的活動),總是會調用onResume

假設用戶開始一個新的Activity,為什么在onPause()之前加上onResume()

僅在將Activity置於后台時,或在onDestroy之前(如果應用程序被破壞),才調用onPause 因此, 總是 調用onResume 之后調用onPause 為什么? 因為這就是Android框架定義的Activity的生命周期。

活動的生命周期如下

  1. 通過onCreate(),onStart(),onResume ....重新開始,然后通過onPause()-> onStop()-> onDestroy()關閉
  2. 黃色背景:活動進入背景,因此不再可見。 用戶返回到活動。
    例如

    • 活動運行時關閉手機屏幕:onPause()-> onStop()
    • 再次打開屏幕:onStart()-> onResume()
  3. 綠色背景:活動停留在可見的屏幕區域中,但未處於活動狀態,例如,激活多個窗口(分屏),每個窗口占據屏幕的一部分,並提示您的應用程序使其處於活動狀態

    • 在另一個應用程序上的提示:onPause()在應用程序進入暫停狀態時被調用,但仍然可見
    • 在您的應用程序上的提示:onResume()被調用

活動生命周期

這是帶有兩個應用程序的分屏示例:

具有兩個應用程序的分屏

有關活動生命周期的詳細信息,請參閱android文檔

暫無
暫無

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

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