--by CY[kotomifi@gmail.com]
1.protected void onCreate(Bundle savedInstanceState) { throw new RuntimeException("Stub!"); }
當創建一個Activity時,系統會自動調用onCreate方法來完成創建工作.該創建工作包括布局,監聽器的綁定等.
首先說一下Bundle 這個類,Bundle是一個鍵值對,跟Map類似,兩個Activity之間的通信可以用Bundle類來實現.
Bundle savedInstanceState對象則是保存程序上一次關閉(凍結)時的狀態,也可以通過重寫onFreeze方法來保存凍結前的狀態.當程序啟動(Activity 重新初始化時),會再次調用onCreate方法,從savedInstanceState中獲取前一次的凍結狀態,可以通過Bundle來將這一個Activity 中的內容傳到下一個Activity 中.
當一個Activity 結束前需要保存狀態,就保存在savedInstanceState中,當其它Activity創建時,就能從中獲得數據.
?
2.protected void onSaveInstanceState(Bundle outState) { throw new RuntimeException("Stub!"); }
Android中的Activity通過onSaveInstanceState()方法保存Activity的狀態,在onCreate或者onRestoreInstanceState方法中哦功能恢復,如果是通過onRestart方法運行,則只會執行onSaveInstanceState方法.
圖1-1是android Activity的生命周期.
圖1-1
?
3. protected void onRestoreInstanceState(Bundle savedInstanceState) { throw new RuntimeException("Stub!"); }
解釋見第2條
4.protected void onRestart() { throw new RuntimeException("Stub!"); }
解釋見第2條
5. protected void onStart() { throw new RuntimeException("Stub!"); }
下面來結合來說一下onCreate, onStart, onResume, onPause, onRestart, onStop, onDestroy方法.當啟動一個Activity時,系統會依次調用onCreate, onStart, onResume方法.
從activity1啟動activity2時,會先調用activity1的onPause方法,然后再調用activity2的onCreate, onStart, OnResume方法,若要完全覆蓋activity1,則最后再調用activity1的onStop方法.
onCreate方法:
- Activity第一次創建時,被系統調用
- 作用是設置布局文件,綁定監聽器
onStart方法:
- ?Activity可見時,會調用該方法
onResume方法:
- 用戶可以獲取當前焦點時,會調用該方法
onPause方法:
- 當新的Activity遮住當前Activity時,該方法會保存當前Activity中的數據
onRestart方法:
- 一個Activity沒有被銷毀時(調用onDestroy方法),再次使用該Activity時會調用onRestart方法
?onStop方法:
- 當當前Activity完全不可見時,系統會調用該方法
onDestroy方法:
- 銷毀一個Activity