<p>大家好趟济,關(guān)于Android中Activity的生命周期,網(wǎng)上大多數(shù)文章基本都是直接貼圖寄悯、翻譯API,比較籠統(tǒng)含糊不清许起。</p>
<p>
<p> </p>
<p><strong>我就用故事來說一說:</strong></p>
<p>有個(gè)人叫User十偶,TA養(yǎng)了幾只貓,有只貓叫Activity园细。User見證了Activity貓的一生惦积。</p>
<p>
<p> </p>
<p>User想要一只小貓(想用一些功能),于是讓一只母貓和一只公貓交配(觸摸屏幕打開Activity界面)猛频,</p>
<p>之后經(jīng)過母貓一段時(shí)間的孕育(Activity launched)狮崩,小貓咪出生了(onCreate),取名叫Activity鹿寻,放在籠子(App)里養(yǎng)睦柴。</p>
<p> </p>
<p>主人把它抱出來,小貓咪Activity醒來(onStart)睜開眼(onResume)毡熏,轉(zhuǎn)轉(zhuǎn)頭坦敌、伸伸爪子、哭鬧著要吃東西...(Activity running)痢法。</p>
<p>然后主人喂食狱窘、和它玩(用戶在Activity上的操作)...</p>
<p>User覺得和Activity一起的時(shí)間差不多夠了,就(打開新的Activity)把它關(guān)進(jìn)籠子财搁,和其它貓一邊玩去了(Another activity comes into the foreground)蘸炸。</p>
<p>Activity就開始閉目養(yǎng)神(onPause)...</p>
<p>過了一會兒,主人打開籠子尖奔,呼喚它的名字(User returns to the activity)搭儒,它聽到后馬上睜開眼(onResume)跑過去和主人玩耍(Activity running)...</p>
<p>后來主人又把它關(guān)起來然后走了,Activity繼續(xù)閉目養(yǎng)神(onPause)...</p>
<p>再后來主人把燈關(guān)了(The activity is no longer visible)提茁,Activity感覺天黑了就睡了(onStop)...</p>
<p> </p>
<p>不知道什么時(shí)候淹禾,主人又回來了,一邊敲籠子茴扁、一邊叫著Activity的名字(User navigates to the activity)铃岔,</p>
<p>Activity被從美夢中拉回了現(xiàn)實(shí)世界,恢復(fù)了狀態(tài)(onRestart)丹弱,然后醒來(onStart)睜開眼(onResume)...</p>
<p>就這樣不知不覺過了很久...</p>
<p> </p>
<p>有一次主人(按下主頁、多任務(wù)或電源按鈕)出遠(yuǎn)門了铲咨,好久沒回來躲胳,家里的食物不夠,很快就被大家吃光了(Apps with higher priority need memory)纤勒。</p>
<p>由于Activity很弱小(優(yōu)先級低)坯苹、還被關(guān)在籠子里(沒有綁定前臺Service),所以吃到的食物很少摇天。</p>
<p>幾頓饑渴后大家都餓昏了粹湃,紛紛進(jìn)入休克狀態(tài)(App process killed)恐仑。</p>
<p>主人回來時(shí)看到可憐的Activity一動不動地躺著,怎么都叫不醒为鳄,就趕緊送去獸醫(yī)院搶救(User navigates to the activity)裳仆。</p>
<p>醫(yī)生給它輸了血和營養(yǎng)等(系統(tǒng)重新分給內(nèi)存),經(jīng)過一段時(shí)間后Activity終于復(fù)活了孤钦,它感覺好像重新從媽媽的肚子里出來一樣(onCreate)歧斟。</p>
<p>它醒來(onStart)睜開眼(onResume),和主人打打鬧鬧(Activity running)偏形,過了一會兒主人就帶著它回家了...</p>
<p> </p>
<p>俗話說静袖,大難不死必有后福,之后主人確實(shí)對Activity照顧有加俊扭。</p>
<p>可是天有不測風(fēng)云队橙,有一天Activity被一個(gè)壞蛋弄死了(The activity is destroyed by the system)。</p>
<p>Activity死了(onDestroy)萨惑,User很傷心地把它埋了(Activity shut down)...</p>
<p> </p>
<p>User很留戀和Activity在一起的時(shí)光捐康,心有不甘,于是重新要了一只小貓咒钟,名字仍然叫Activity...</p>
<p>Activity一天天長大吹由,主人對它非常寵愛,但它卻越來越叛逆朱嘴。</p>
<p>終于有一天倾鲫,主人受夠了,覺得Activity實(shí)在太可惡(或者沒有利用價(jià)值)就(點(diǎn)擊返回按鈕)把它拋棄了(The activity is finished)...</p>
<p>Activity不適應(yīng)外部惡劣的環(huán)境很快就死了(onDestroy)萍嬉,大自然用風(fēng)和泥土把它埋葬(Activity shut down)...</p>
<p> </p>
<p>這就是Activity貓的一生乌昔。</p>
<p> </p>
<p>ZBLibrary提供了isAlive()、isRunning()等判斷Activity壤追、Fragment生命周期狀態(tài)的方法磕道;</p>
<p>以及runUiThread(Runnable runnable)方法來避免直接runOnUiThread(Runnable runnable)導(dǎo)致在onDestroy后運(yùn)行崩潰;</p>
<p>還有線程管理類ThreadManager行冰,BaseActivity溺蕉、BaseFragment內(nèi)可以runThread(String tag, Runnable runnable)很方便地新開線程,</p>
<p>onDestroy后自動釋放悼做,不用擔(dān)心直接new Thread(runnable).start()在onDestroy后還在運(yùn)行浪費(fèi)資源疯特,甚至使用被回收的變量導(dǎo)致崩潰等問題。</p>
<p> </p>
<h1>ZBLibrary-Android快速開發(fā)框架</h1>
<p>
</p><strong>下載試用</strong><br /></p><a >ZBLibraryDemoApp.apk</a><br /><br /></p><strong>下載地址(覺得不錯(cuò)就<strong>Star支持下吧_)</strong></strong>
</p><a >https://github.com/TommyLemon/Android-ZBLibrary</a></p>
<p> </p>