1. 程式人生 > >Android Activity 生命周期中onStart()和onResume()的區別

Android Activity 生命周期中onStart()和onResume()的區別

執行 com 系統 而在 周期 分享圖片 get 重新啟動 連接

首先了解Activity的四種狀態

Running狀態:一個新的Activity啟動入棧後,它在屏幕最前端,處於棧的最頂端,此時它處於可見並可和用戶交互的激活狀態。
Paused狀態:當Activity被另一個透明或者Dialog樣式的Activity覆蓋時的狀態。此時它依然與窗口管理器保持連接,系統繼續維護其內部狀態,它仍然可見,但它已經失去了焦點,故不可與用戶交互。
Stopped狀態:當Activity不可見時,Activity處於Stopped狀態。當Activity處於此狀態時,一定要保存當前數據和當前的UI狀態,否則一旦Activity退出或關閉時,當前的數據和UI狀態就丟失了。
Killed狀態:Activity被殺掉以後或者被啟動以前,處於Killed狀態。這是Activity已從Activity堆棧中移除,需要重新啟動才可以顯示和使用。

4種狀態中,Running狀態和Paused狀態是可見的,Stopped狀態和Killed狀態時不可見的。

onStart()和onResume()的區別

onStart()是activity界面被顯示出來的時候執行的,用戶可見,包括有一個activity在他上面,但沒有將它完全覆蓋,用戶可以看到部分activity但不能與它交互
onResume()是當該activity與用戶能進行交互時被執行,用戶可以獲得activity的焦點,能夠與用戶交互。


onStart()通常就是onStop()(也就是用戶按下了home鍵,activity變為後臺後),之後用戶再切換回這個activity就會調用onRestart()而後調用onStart()
onResume()是onPause()(通常是當前的acitivty被暫停了,比如被另一個透明或者Dialog樣式的Activity

覆蓋了),之後dialog取消,activity回到可交互狀態,調用onResume()。

技術分享圖片

引申:經測試,onPause()方法在彈出Dialog時不會被調用,而在被另一個透明或者Dialog樣式的Activity覆蓋時才會被調用。

參考:Activity的生命周期之Pause(暫停)和Resume(重新返回)

技術分享圖片

附Activity生命周期

技術分享圖片

Android Activity 生命周期中onStart()和onResume()的區別