Activity的生命周期

歸納起來,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--------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 啟動(dòng)與銷毀Activity 不同于使用 main() 方法啟動(dòng)應(yīng)用的其他編程范例,Android 系統(tǒng)會通過調(diào)用對...
    安卓Boy閱讀 1,797評論 3 5
  • 您的應(yīng)用中的Activity應(yīng)該做到如下需求: 1.用戶在使用應(yīng)用時(shí)接聽來電或切換到另一個(gè)應(yīng)用,它不會崩潰。 2....
    正陽Android閱讀 546評論 1 0
  • 第一次寫有關(guān)android的文章好緊張~-~,先來一張經(jīng)典的生命周期流程圖壓壓驚: 從圖上我們可以知道Activi...
    彼岸到此方閱讀 262評論 0 0
  • 又到了一年中表白的好時(shí)機(jī),不知這次牛郎織女的短暫相聚能促成多少對癡兒怨女。但肯定的是,一定有不少人兒還在猶豫著要不...
    曉楓知月閱讀 401評論 0 0
  • 偉大的中文: 中國有兩個(gè)體育項(xiàng)目大家根本不用看,也不用擔(dān)心。 一個(gè)是乒乓球,一個(gè)是男足。 前者是“誰也贏不了!”?...
    毒吻公子閱讀 216評論 0 0