activity是安卓的四大組件之一,這篇文章帶你們一塊兒總結生命週期的各個方法。我沒有貼一些打印log的代碼,你們能夠本身去嘗試,看看這個總結是否正確,若是錯誤,提交評論便可。android
7、activityA按home鍵退居後臺:同2的流程,從home返回到activityA,同4的流程;函數
onWindowFocusChanged:
在Activity窗口得到或失去焦點時被調用而且當Activity被建立時是在onResume以後被調用,當Activity被覆蓋或者退居後臺或者當前Activity退出時,它是在onPause以後被調用(在這個方法中能夠view已經繪製完成,能夠獲取view的寬高等屬性)cdn
onSaveInstanceState:
(1)在Activity被覆蓋或退居後臺以後,系統資源不足將其殺死,此方法會被調用;(2)在用戶改變屏幕方向時,此方法會被調用;(3)在當前Activity跳轉到其餘Activity或者按Home鍵回到主屏,自身退居後臺時,此方法會被調用。第一種狀況咱們沒法保證何時發生,系統根據資源緊張程度去調度;第二種是屏幕翻轉方向時,系統先銷燬當前的Activity,而後再重建一個新的,調用此方法時,咱們能夠保存一些臨時數據;第三種狀況系統調用此方法是爲了保存當前窗口各個View組件的狀態。onSaveInstanceState的調用順序是在onstop以前。(android3.0以前:在onPause以前調用,在3.0以後,在onPause以後調用)blog
onRestoreInstanceState:
有的人說這個方法和onSaveInstanceState是一對,其實否則,(1)在Activity被覆蓋或退居後臺以後,系統資源不足將其殺死,而後用戶又回到了此Activity,此方法會被調用;(2)在用戶改變屏幕方向時,重建的過程當中,此方法會被調用。咱們能夠重寫此方法,以即可以恢復一些臨時數據。onRestoreInstanceState的調用順序是在onStart以後。(在當前Activity跳轉到其餘Activity或者按Home鍵回到主屏,自身退居後臺時:onRestoreInstanceState不會調用,可是onSaveInstanceState會調用,這裏就是區別)生命週期
當Activity被系統撤銷後從新創建時,保存以及恢復數據的函數調用順序是:onSaveInstanceState(保存數據)-->onCreate(恢復數據allstate)-->onRestoryInstanceState(恢復數據HierarchyState)。資源
若是要取消切換屏幕方法重建activity,能夠配置configChanges屬性:
android:configChanges="keyboardHidden|orientation|screenSize(當支持的最小sdk版本大於android4.0須要設置這個屬性)"it