生命週期描述的是一個類從創建(new出來)到死亡(垃圾回收)的過程中會執行的方法。在這個過程中,會針對不同的生命階段調用不同的的方法。
Activity是android中四大組件之一,是最常見的應用組件,也是用的最多的組件,它能夠提供一個界面與用戶進行交互。Activity從創建到銷燬有多種狀態,從一種狀態到另一種狀態時會激發相應的回調方法,這些回調方法包括:onCreate onDestory onStart onStop onResume onPause。這些方法都是兩兩對應的,onCreate-->創建與onDestory-->銷燬;onStart-->可見與onStop-->不可見;onResume-->可編輯(焦點)和onPause-->未獲得焦點。最後還有一個方法是onRestart,這個方法在什麼時候調用呢?當Activity被onStop後,但是並沒有onDestory,即並沒有被銷燬時,用戶重新回到當前Activity時,就調用onRestart方法,這裏就不再是調用onCreate方法了。
public class MainActivity extends ActionBarActivity {
private final static String TAG = "MainActivity";
@Override
// Activity被創建時調用
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG, "onCreate.......");
}
@Override
// 該狀態用戶可見,但是用戶還不能與之進行交互
protected void onStart() {
super.onStart();
Log.e(TAG, "onStart.......");
}
@Override
// 該狀態是Activity獲得用戶焦點,用戶可以與之進行交互
protected void onResume() {
super.onResume();
Log.e(TAG, "onResume.......");
}
@Override
//與onResume對應,當Activity失去焦點時調用
protected void onPause() {
super.onPause();
Log.e(TAG, "onPause.......");
}
@Override
//與onStart對應,當Activity不可見時調用
protected void onStop() {
super.onStop();
Log.e(TAG, "onStop.......");
}
@Override
//與onCreate對應,當Activity被銷燬時調用
protected void onDestroy() {
super.onDestroy();
Log.e(TAG, "onDestroy.......");
}
@Override
//Activity從後臺重新回到前臺調用
protected void onRestart() {
super.onRestart();
Log.e(TAG, "onRestart.......");
}
}
Activity的完整生命週期:oncreate-->onstart-->onresume-->onpause-->onstop-->ondestory。用戶在點擊返回鍵的時候,Activity會銷燬,這時Activity先是不可編輯,再是不可見,最後被銷燬。而當用戶點擊home鍵的時候,即表示退回到桌面,這時的Activity並不會被銷燬,所以這裏現實不可編輯,再是不可見,這時並不會調用onDestory方法被銷燬,此時再點擊進入該應用,會調用onRestart方法,不再是調用Activity,然後再是調用onStart,onResume。
下面是Activity的生命週期圖: