1. 簡述
安卓的生命週期有六個,分別爲:onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(),每一個Activity都有這些生命週期,通過這些生命週期,Activity在不存在,停止,暫停和運行之間轉換,如下圖:
2. 通過打印日誌信息更深瞭解生命週期
如果對安卓Logcat工具或是日誌打印不瞭解,請戳此鏈接
用到的代碼
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivityLog";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"onCreate()方法被調用");
setContentView(R.layout.activity_main);
}
@Override
public void onStart(){
super.onStart();
Log.d(TAG,"onStart()方法被調用");
}
@Override
public void onResume(){
super.onResume();
Log.d(TAG,"onResume()方法被調用");
}
@Override
public void onPause(){
super.onPause();
Log.d(TAG,"onPause()方法被調用");
}
@Override
public void onStop(){
super.onStop();
Log.d(TAG,"onStop()方法被調用");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy()方法被調用");
}
}
第一步:第一次打開應用
運行程序,第一次打開應用日誌顯示如下圖,可見三個生命週期方法被調用,分別爲:onCreate(), onStart(), onResume(),通過上圖我們得知,一個Activity第一次打開經過了:不存在->停止->暫停->運行階段
第二步:按下home鍵
日誌打印如下,可見兩個生命週期方法被調用,分別爲 onPause(), onStop(),此時,Activity實例並沒有被消滅,而是存在內存之中,Activity的狀態也來到了停止
第三步:再次打開應用
日誌打印如圖,可見 onStart(), **onResume()**方法再次被調用,Activity處於運行狀態
第四步:按下返回鍵
日誌打印如下,可見調用了onPause(), onStop(), **onDestroy()**三個生命週期方法,此時應用退出,Activity又回到了不存在的狀態,內存中已經沒有了activity實例
3. 注意
當安卓應用處於運行狀態屏幕翻轉之後,依此進行的操作是onPause(), onStop(), onDestroy(),onCreate(), onStart(), onResume(),即,屏幕翻轉之後的Activity實例要先被安卓系統消滅,然後再重新創建,所以,像我一樣的安卓小萌新開發的時候注意屏幕翻轉的信息保存。