這篇文章的知識點(diǎn)包括:Activity的生命周期介紹、生命周期流程介紹以及Activity的四種狀態(tài),閱讀完整文相信大家對Activity會有一定的認(rèn)識。
創(chuàng)新互聯(lián)從2013年成立,先為羅江等服務(wù)建站,羅江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為羅江企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
Activity生命周期的概念:
Activity作為Android的四大組件之一,非常的重要,也是最常用的四大組件,使用Activity必須要在AndroidManifest中進(jìn)行注冊。Activity相當(dāng)于一個(gè)servlet,我們的Activity處在這個(gè)容器中,一切創(chuàng)建實(shí)例、初始化、銷毀實(shí)例等過程都是容器來調(diào)用的,這也就是所謂的“Don't call me, I'll call you.”機(jī)制。
Activity的生命周期流程:
onCreate()--->onStart()--->onResume()--->onPause()--->onStop()--->onDestory()
onCreate():當(dāng)activity是被創(chuàng)建時(shí)候,會自動運(yùn)行該方法。該方法做一些初始化動作,比如創(chuàng)建views,設(shè)置數(shù)據(jù)到list等等,該方法提供了一個(gè)Bundle類型的變量,該變量中有這個(gè)activity以前的狀態(tài)信息,前提是以前存過這些信息。這個(gè)方法執(zhí)行完后執(zhí)行的是onStart()方法;若在onCreate方法中加入finish()方法,onCreate下一個(gè)運(yùn)行onDestroy方法。
onRestart():把a(bǔ)ctivity從onStop狀態(tài)喚醒時(shí),會用onRestart方法,該方法優(yōu)先于再次運(yùn)行的onStart,運(yùn)行完onRestart之后運(yùn)行onStart。若在onRestart()方法中加入finish()語句,則還是會繼續(xù)運(yùn)行onStart及后面的狀態(tài)方法直到onDestroy運(yùn)行完
onStart():當(dāng)activity對用戶可見時(shí)會調(diào)用onStart,當(dāng)activity在前臺顯示時(shí),會運(yùn)行onResume;當(dāng)activity還沒在前臺顯示就被隱藏(停止?fàn)顟B(tài))了會運(yùn)行onStop(),比如在onStart方法中用了finish()方法的話,onStart()之后就會直接運(yùn)行onStop->onDestroy。
onResume():當(dāng)activity開始與用戶交互時(shí),會調(diào)用onResume,并且為了用戶操作此時(shí)該activity位于activity棧的頂部。經(jīng)過某些操作后該方法執(zhí)行完后執(zhí)行的是onPause()
onPause():當(dāng)一個(gè)activity運(yùn)行到onResume方法后,不管是這個(gè)activity要銷毀還是要暫?;蛲V?,都會調(diào)用該方法。這個(gè)方法之后有可能是onResume也有可能是onStop,若是在這個(gè)activity-A中打開一個(gè)不完全覆蓋這個(gè)activity-A的新activity-B,那么activity-A就會是onPause狀態(tài),當(dāng)activity-B退出時(shí),activity-A就直接運(yùn)行onResume(前提是onPause的方法執(zhí)行完了,否則會等onPause方法執(zhí)行完后才運(yùn)行onResume方法,所以不建議在這個(gè)方法中執(zhí)行CPU密集的操作)。若是需要退出activity-A,那么下一個(gè)就會執(zhí)行onStop。onPause()用于提交未保存發(fā)生變化了的持久化數(shù)據(jù),及停止動畫及其他其他比較消耗CPU的事件(比如廣播接收器,傳感器(比如GPS),或者消耗電量的資源),這是為了更好的運(yùn)行新的activity。
onStop():當(dāng)這個(gè)activity完全看不見的時(shí)候,會調(diào)用onStop方法,因?yàn)榱硪粋€(gè)activity會調(diào)用onResume并且覆蓋這個(gè)activity。以下三種情況都會使這個(gè)activity調(diào)用onStop()方法,第一種是一個(gè)新的activity被執(zhí)行,第二種是一個(gè)已經(jīng)存在的activity被切換到最前端,第三種是這個(gè)activity要被銷毀。如果通過用戶召回這個(gè)activity,那么會調(diào)用onRestart方法;若這個(gè)activity要被銷毀,則調(diào)用onDestroy方法。
onDestroy():當(dāng)activity銷毀前會調(diào)用該方法,比如發(fā)生如下情況:activity調(diào)用了finish()方法來結(jié)束這個(gè)activity,或者因?yàn)橄到y(tǒng)為了節(jié)省空間而臨時(shí)銷毀這個(gè)activity,這兩個(gè)情況可以通過isFinishing()方法判斷。
Activity的四個(gè)狀態(tài):
1、running->當(dāng)前顯示在屏幕的activity(位于任務(wù)棧的頂部),用戶可見狀態(tài)。
2、poused->依舊在用戶可見狀態(tài),但是界面焦點(diǎn)已經(jīng)失去,此Activity無法與用戶進(jìn)行交互。
3、stopped->用戶看不到當(dāng)前界面,也無法與用戶進(jìn)行交互 完全被覆蓋。
4、killed->當(dāng)前界面被銷毀,等待這系統(tǒng)被回收。
看完上述內(nèi)容,你們對Activity有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!