這篇文章的知識(shí)點(diǎn)包括:Activity的生命周期介紹、生命周期流程介紹以及Activity的四種狀態(tài),閱讀完整文相信大家對(duì)Activity會(huì)有一定的認(rèn)識(shí)。
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括衛(wèi)濱網(wǎng)站建設(shè)、衛(wèi)濱網(wǎng)站制作、衛(wèi)濱網(wǎng)頁(yè)制作以及衛(wèi)濱網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,衛(wèi)濱網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到衛(wèi)濱省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!Activity生命周期的概念:
Activity作為Android的四大組件之一,非常的重要,也是最常用的四大組件,使用Activity必須要在AndroidManifest中進(jìn)行注冊(cè)。Activity相當(dāng)于一個(gè)servlet,我們的Activity處在這個(gè)容器中,一切創(chuàng)建實(shí)例、初始化、銷毀實(shí)例等過(guò)程都是容器來(lái)調(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í)候,會(huì)自動(dòng)運(yùn)行該方法。該方法做一些初始化動(dòng)作,比如創(chuàng)建views,設(shè)置數(shù)據(jù)到list等等,該方法提供了一個(gè)Bundle類型的變量,該變量中有這個(gè)activity以前的狀態(tài)信息,前提是以前存過(guò)這些信息。這個(gè)方法執(zhí)行完后執(zhí)行的是onStart()方法;若在onCreate方法中加入finish()方法,onCreate下一個(gè)運(yùn)行onDestroy方法。
onRestart():把a(bǔ)ctivity從onStop狀態(tài)喚醒時(shí),會(huì)用onRestart方法,該方法優(yōu)先于再次運(yùn)行的onStart,運(yùn)行完onRestart之后運(yùn)行onStart。若在onRestart()方法中加入finish()語(yǔ)句,則還是會(huì)繼續(xù)運(yùn)行onStart及后面的狀態(tài)方法直到onDestroy運(yùn)行完
onStart():當(dāng)activity對(duì)用戶可見(jiàn)時(shí)會(huì)調(diào)用onStart,當(dāng)activity在前臺(tái)顯示時(shí),會(huì)運(yùn)行onResume;當(dāng)activity還沒(méi)在前臺(tái)顯示就被隱藏(停止?fàn)顟B(tài))了會(huì)運(yùn)行onStop(),比如在onStart方法中用了finish()方法的話,onStart()之后就會(huì)直接運(yùn)行onStop->onDestroy。
onResume():當(dāng)activity開(kāi)始與用戶交互時(shí),會(huì)調(diào)用onResume,并且為了用戶操作此時(shí)該activity位于activity棧的頂部。經(jīng)過(guò)某些操作后該方法執(zhí)行完后執(zhí)行的是onPause()
onPause():當(dāng)一個(gè)activity運(yùn)行到onResume方法后,不管是這個(gè)activity要銷毀還是要暫?;蛲V梗紩?huì)調(diào)用該方法。這個(gè)方法之后有可能是onResume也有可能是onStop,若是在這個(gè)activity-A中打開(kāi)一個(gè)不完全覆蓋這個(gè)activity-A的新activity-B,那么activity-A就會(huì)是onPause狀態(tài),當(dāng)activity-B退出時(shí),activity-A就直接運(yùn)行onResume(前提是onPause的方法執(zhí)行完了,否則會(huì)等onPause方法執(zhí)行完后才運(yùn)行onResume方法,所以不建議在這個(gè)方法中執(zhí)行CPU密集的操作)。若是需要退出activity-A,那么下一個(gè)就會(huì)執(zhí)行onStop。onPause()用于提交未保存發(fā)生變化了的持久化數(shù)據(jù),及停止動(dòng)畫(huà)及其他其他比較消耗CPU的事件(比如廣播接收器,傳感器(比如GPS),或者消耗電量的資源),這是為了更好的運(yùn)行新的activity。
onStop():當(dāng)這個(gè)activity完全看不見(jiàn)的時(shí)候,會(huì)調(diào)用onStop方法,因?yàn)榱硪粋€(gè)activity會(huì)調(diào)用onResume并且覆蓋這個(gè)activity。以下三種情況都會(huì)使這個(gè)activity調(diào)用onStop()方法,第一種是一個(gè)新的activity被執(zhí)行,第二種是一個(gè)已經(jīng)存在的activity被切換到最前端,第三種是這個(gè)activity要被銷毀。如果通過(guò)用戶召回這個(gè)activity,那么會(huì)調(diào)用onRestart方法;若這個(gè)activity要被銷毀,則調(diào)用onDestroy方法。
onDestroy():當(dāng)activity銷毀前會(huì)調(diào)用該方法,比如發(fā)生如下情況:activity調(diào)用了finish()方法來(lái)結(jié)束這個(gè)activity,或者因?yàn)橄到y(tǒng)為了節(jié)省空間而臨時(shí)銷毀這個(gè)activity,這兩個(gè)情況可以通過(guò)isFinishing()方法判斷。
Activity的四個(gè)狀態(tài):
1、running->當(dāng)前顯示在屏幕的activity(位于任務(wù)棧的頂部),用戶可見(jiàn)狀態(tài)。
2、poused->依舊在用戶可見(jiàn)狀態(tài),但是界面焦點(diǎn)已經(jīng)失去,此Activity無(wú)法與用戶進(jìn)行交互。
3、stopped->用戶看不到當(dāng)前界面,也無(wú)法與用戶進(jìn)行交互 完全被覆蓋。
4、killed->當(dāng)前界面被銷毀,等待這系統(tǒng)被回收。
看完上述內(nèi)容,你們對(duì)Activity有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!