歸納起來,Activity大致會經(jīng)過如下四個(gè)狀態(tài)。
活動(dòng)狀態(tài):當(dāng)前Activity位于前臺,用戶可見,可以獲得焦點(diǎn)。
暫停狀態(tài):其他Activity位于前臺,該Activity依然可見,只是不能獲得焦點(diǎn)。
停止?fàn)顟B(tài):該Activity不可見,失去焦點(diǎn)。
銷毀狀態(tài):該Activity結(jié)束,或Activity所在的Dalvik進(jìn)程被結(jié)束。
在Activity的生命周期中,如下方法會被系統(tǒng)回調(diào)。
onCreate(Bundle savedStatus):創(chuàng)建Activity時(shí)被回調(diào)。
onStart():啟動(dòng)Activity時(shí)被回調(diào)。
onRestart():重新啟動(dòng)Activity時(shí)被回調(diào)。
onResume():恢復(fù)Activity時(shí)被回調(diào)。
onPause:暫停Activity時(shí)被回調(diào)。
onStop:停止Activity時(shí)被回調(diào)。
onDestroy:銷毀Activity時(shí)被回調(diào)。
下面進(jìn)行代碼演示,布局文件里面就一個(gè)按鈕,不做代碼演示,LifeCycle.java代碼如下:
public classLifeCycleextendsAppCompatActivity {
finalStringTAG="--CrazyIt--";
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_life_cycle);
Log.d(TAG,"-------onCreate--------");
Button bn = (Button)findViewById(R.id.bn);
bn.setOnClickListener(newView.OnClickListener() {
@Override
public voidonClick(View v) {
//結(jié)束該Activity
LifeCycle.this.finish();
}
});
}
@Override
public voidonStart() {
super.onStart();
Log.d(TAG,"---------onStart---------");
}
@Override
public voidonRestart() {
super.onRestart();
Log.d(TAG,"-----onRestart------");
}
@Override
public voidonResume() {
super.onResume();
Log.d(TAG,"-------onResume-------");
}
@Override
public voidonPause() {
super.onPause();
Log.d(TAG,"------onPause------");
}
@Override
public voidonStop() {
super.onStop();
Log.d(TAG,"------onStop-------");
}
@Override
public voidonDestroy() {
super.onDestroy();
Log.d(TAG,"----------onDestroy--------");
}
}
當(dāng)程序啟動(dòng)時(shí)的打印結(jié)果:
-------onCreate--------
---------onStart---------
-------onResume-------
按模擬器右邊的按鍵時(shí),返回系統(tǒng)桌面,當(dāng)前該Activity將失去焦點(diǎn)且不可見,當(dāng)該Activity并未被銷毀,只是進(jìn)入暫停狀態(tài),輸出結(jié)果如下:
------onPause------
------onStop-------
當(dāng)程序重新進(jìn)入活動(dòng)狀態(tài)時(shí),輸出結(jié)果如下:
-----onRestart------
---------onStart---------
-------onResume-------
當(dāng)點(diǎn)擊關(guān)閉按鈕時(shí),輸出結(jié)果如下:
------onStop-------
----------onDestroy--------