一、Activity生命周期介紹
我們在學Java Web時會學到Servlet的生命周期,因此對生命周期的概念已經有一定了解,簡單地說就是某個事物從出生到死亡的過程。
Activity也存在聲明周期,從Activity被創建到最後被銷毀;Activity運行時可能會受到一些突發事件的影響,例如在使用Activity時突然來了一個電話,則Activity需要在生命周期函數中設置;
下圖是Activity生命周期中最經典的圖:
7個生命周期方法:
(1)onCreate(Bundle bundle);創建Activity
(2)onStart();開啟Activity時調用
(3)onResume();在Activity顯示時調用
(4)onPause();在某個Activity被覆蓋,但是又沒有被完全覆蓋時調用
(5)onStop();在某個Activity被覆蓋時調用
(6)onRestart();在某個Activity被覆蓋後又重新顯示時調用
(7)onDestroy();最後銷毀時調用
這些方法總結後能夠有幾個規律:
(1)onCreate()-->onStart()-->onResume()為開始顯示Activity的過程
(2)onResume()-->onPause()為此Activity不在最前面,但是還是可見的過程
(3)onResume()-->onPause()-->onStop()為Activity被覆蓋的過程
(4)onPause()-->onResume()為Activity從原本可見但不是最前面到重新到最前面的過程
(5)onStop()-->onRestart()-->onStart()-->onResume()為Activity從不可見到顯示在最前面的過程
二、非生命周期但重要的方法
當應用遇到意外情況(如內存不足,用戶直接按home鍵等)需要保存一些臨時數據,比如你填寫EditText寫到一半,你按錯鍵了,按成home鍵,則如果默認情況,會丟失全部的輸入信息,但是這樣對用戶來說就會有損失,因此我們需要下面兩個方法:
1.onSaveInstanceState(Bundle bundle); 意外情況下保存數據
當意外發生時保存數據調用
由運行狀態進入暫停狀態或停止狀態調用
屏幕旋轉時調用
2.onRestoreInstanceState(Bundle bundle); 恢復數據
比如:
我們要做到保留EditText輸入的信息,因此代碼為:
三、其他一些設置
<activity android:theme="@android:style/Theme.Dialog"/>可以將Activity設置成窗口模式;