『壹』 如何管理android中Activity的生命周期
管理Android中Activity的生命周期
在一個activity的生命周期中,系統會像金字塔模型一樣去調用一系列的生命周期回調函數。Activity生命周期的每一個階段就像金字塔中的台階。當系統創建了一個新的activity實例,每一個回調函數會向上一階移動activity狀態。處在金字塔頂端意味著當前activity處在前台並處於用戶可與其進行交互的狀態。
當用戶退出這個activity時,為了回收該activity,系統會調用其它方法來向下一階移動activity狀態。在某些情況下,activity會隱藏在金字塔下等待(例如當用戶切換到其他app),此時activity可以重新回到頂端(如果用戶回到這個activity)並恢復用戶離開時的狀態。
根據activity的復雜度,也許不需要實現所有的生命周期方法。但了解每一個方法的回調時機並在其中填充相應功能,使得確保app能夠像用戶期望的那樣執行是很有必要的。如何實現一個符合用戶期待的app,我們需要注意下面幾點:
使用app的時候,不會因為有來電通話或者切換到其他app而導致程序crash。
用戶沒有激活某個組件時不會消耗寶貴的系統資源。
離開app並且一段時間後返回,不會丟失用戶的使用進度。
設備發生屏幕旋轉時不會crash或者丟失用戶的使用進度。
只有三個狀態是靜態的,這三個狀態下activity可以存在一段比較長的時間。(其它幾個狀態會很快就切換掉,停留的時間比較短暫)
Resumed:該狀態下,activity處在前台,用戶可以與它進行交互。(通常也被理解為"running" 狀態)
Paused:該狀態下,activity的部分被另外一個activity所遮蓋:另外的activity來到前台,但是半透明的,不會覆蓋整個屏幕。被暫停的activity不再接受用戶的輸入且不再執行任何代碼。
Stopped:該狀態下, activity完全被隱藏,對用戶不可見。可以認為是在後台。當stopped, activity實例與它的所有狀態信息(如成員變數等)都會被保留,但activity不能執行任何代碼。
『貳』 Android基礎之Activity生命周期
Activity是Android最常用的四大組件之一,Activity是Android應用中與用戶交互的界面,通常一個activity就是一個屏幕,Activity一共有四種狀態,Active/Running(當Activity可見且可以與用戶交互);Paused(當Activity可見但是不可交互);Stoped(當Activity被完全覆蓋不可見);Killed(當Activity被系統從內存中刪除).其生命周期如下圖:
相關方法及作用:
1 onCreate:當Activity創建時僅且調用一次,該方法主要適用於初始化頁面。
2 onStart:當Activity調用onCreate方法之後,然後調用此方法開啟Activity,Activty此時可見但不可交互。
3 onResume:此時Activity在前台可見且可與用戶交互。適合做UI更新操作。
4 onPouse:當Activity被另外一個Activity覆蓋時調用該方法。
5 onStop:當Activity在前台不可見或者Activity在銷毀前調用此方法,此方法適合做一些資源的回收操作。
6 onDestroy:當activity被銷毀時調用此方法。
問題:
1)onCreate 和 onStart 方法的區別
a.執行次數不同,onCreate只執行一次,而onStart可以執行多次。
b.在activity的狀態不同,onCreate被調用時Activity的狀態還是未可見,而調用onStart時已可見。
2) onStart 和 onStop的區別
在執行onStart或者onStop時,Activity都是不可交互的,執行onStart時Activity在前台不可見,在後台可見。而執行onStop時Activity前後台都不可見。
3)onResume 和 onPouse的區別
在執行onResume時,Activity在前台是可見的且可以與用戶交互的。而執行onPouse時Activity在前台有可能可見,Activity沒有獲取到焦點,此時不可與用戶交互。
『叄』 關於android應用activity生命周期中,按下home鍵和按下back鍵的問題
進程只是APP的一個容器而已,這個容器空了不代表這個容器沒了,但是你把容器銷毀了,容器里的東西一樣會被銷毀,按back鍵就是後退棧做pop操作的過程(回調onbackpressed,默認實現是調用finish(),finish()方法又會去調用OnDestroy),棧頂Activity就被銷毀,所以會回調Activity的OnDestroy方法;而按home鍵是把整個任務棧掛起到後台,回到啟動器首頁,Activity並沒有銷毀。所以不會回調Activity的OnDestroy。
至於長按home鍵啟動任務管理器結束應用,進程還是存在,這個因手機而異。有些手機是銷毀這個應用(Application類的實例),進程這個容器還在,只是空了(空進程),發現進程不見了多數是因為系統回收空進程;有些手機是直接結束進程。