Android應(yīng)用程序----Activity生命周期(1)Activity事件回調(diào)函數(shù)的調(diào)用順序Activity生命周期分類 Activity的生命周期可分為全生命周期、可視生命周期和活動生命周期 每種生命周期中包含不同的事件回調(diào)函數(shù) 全生命周期 全生命周期是從Activity建立到銷毀的全部過程,始于onCreate(),結(jié)束于onDestroy() 使用者通常在onCreate()中初始化Activity所能使用的全局資源和狀態(tài),并在onDestroy()中釋放這些資源 在一些極端的情況下,Android系統(tǒng)會不調(diào)用onDestroy()函數(shù),而直接終止進程 可視生命周期 可視生命周期是Activity在界面上從可見到不可見的過程,開始于onStart(),結(jié)束于onStop() 可視生命周期 onStart()一般用來初始化或啟動與更新界面相關(guān)的資源 onStop()一般用來暫停或停止一切與更新用戶界面相關(guān)的線程、計時器和服務(wù) onRestart()函數(shù)在onSart()前被調(diào)用,用來在Activity從不可見變?yōu)榭梢姷倪^程中,進行一些特定的處理過程 onStart()和onStop()會被多次調(diào)用 onStart()和onStop()也經(jīng)常被用來注冊和注銷BroadcastReceiver 活動生命周期 活動生命周期是Activity在屏幕的最上層,并能夠與用戶交互的階段,開始于onResume(),結(jié)束于onPause() 在Activity的狀態(tài)變換過程中onResume()和onPause()經(jīng)常被調(diào)用,因此這兩個函數(shù)中應(yīng)使用更為簡單、高效的代碼 活動生命周期 onPause()是第一個被標(biāo)識為“可終止”的函數(shù) 在onPause()返回后,onStop()和onDestroy()隨時能被Android系統(tǒng)終止 onPause()常用來保存持久數(shù)據(jù),如界面上的用戶的輸入信息等 onPause()和onSaveInstanceState()的區(qū)別 這兩個函數(shù)都可以用來保存界面的用戶輸入數(shù)據(jù),他們的區(qū)別在于 onPause()一般用于保存持久性數(shù)據(jù),并將數(shù)據(jù)保存在存儲設(shè)備上的文件系統(tǒng)或數(shù)據(jù)庫系統(tǒng)中的 onSaveInstanceState()主要用來保存動態(tài)的狀態(tài)信息,信息一般保存在Bundle中 Bundle是能夠保存多種格式數(shù)據(jù)的對象 在onSaveInstanceState()保存在Bundle中的數(shù)據(jù),系統(tǒng)在調(diào)用onRestoreInstanceState()和onCreate()時,會同樣利用Bundle將數(shù)據(jù)傳遞給函數(shù) 舉例:建立一個新的Android工程 工程名稱:ActivityLifeCycle 包名稱:edu.hrbeu.ActivityLifeCycle Activity名稱:ActivityLifeCycle ActivityLifeCycle.java文件的代碼 上面的程序主要通過在生命周期函數(shù)中添加“日志點”的方法進行調(diào)試,程序的運行結(jié)果將會顯示在LogCat中 為了顯示結(jié)果易于觀察和分析,在LogCat設(shè)置過濾器LifeCycleFilter,過濾方法選擇by Log Tag,過濾關(guān)鍵字為LIFTCYCLE 全生命周期 啟動和關(guān)閉ActivityLifeCycle 的LogCat輸出 啟動ActivityLifeCycle 按下模擬器的“返回鍵” 關(guān)閉ActivityLifeCycle LogCat輸出結(jié)果 函數(shù)的調(diào)用順序:onCreate() → onStart()→ onResume() → onPause()→ onStop()→ onDestroy() 調(diào)用onCreate()函數(shù)分配資源 調(diào)用onStart()將Activity顯示在屏幕上 調(diào)用onResume()獲取屏幕焦點 調(diào)用onPause()、onStop()和onDestroy(),釋放資源并銷毀進程 可視生命周期 狀態(tài)轉(zhuǎn)換 啟動ActivityLifeCycle 按“呼出/接聽鍵”啟動內(nèi)置的撥號程序 再通過“返回鍵”退出撥號程序 ActivityLifeCycle重新顯示在屏幕中 可視生命周期的LogCat輸出結(jié)果 可視生命周期 函數(shù)的調(diào)用順序: onSaveInstanceState ()→ onPause()→ onStop() → onRestart()→ onStart()→ onResume() 調(diào)用onSaveInstanceState()函數(shù)保存Activity狀態(tài) 調(diào)用onPause()和onStop(),停止對不可見Activity的更新 調(diào)用onRestart()恢復(fù)需要界面上需要更新的信息 調(diào)用onStart()和onResume()重新顯示Activity,并接受用戶交互 開啟IDA的可視生命周期:Dev Tools → Development Settings → Immediately destroy activities (IDA)下開啟IDA 活動生命周期 活動生命周期的LogCat輸出 啟動ActivityLifeCycle 通過“掛斷鍵”使模擬器進入休眠狀態(tài) 再通過“掛斷鍵”喚醒模擬器 LogCat的輸出結(jié)果 函數(shù)調(diào)用順序如下:onSaveInstanceState() → onPause() → onResume() 調(diào)用onSaveInstanceState ()保存Activity的狀態(tài) 調(diào)用onPause()停止與用戶交互 調(diào)用onResume()恢復(fù)與用戶的交互 |
|