<p>大家好,關(guān)于Android中Activity的生命周期,網(wǎng)上大多數(shù)文章基本都是直接貼圖、翻譯API,比較籠統(tǒng)含糊不清。</p>
<p>

<p> </p>
<p><strong>我就用故事來說一說:</strong></p>
<p>有個人叫User,TA養(yǎng)了幾只貓,有只貓叫Activity。User見證了Activity貓的一生。</p>
<p>

<p> </p>
<p>User想要一只小貓(想用一些功能),于是讓一只母貓和一只公貓交配(觸摸屏幕打開Activity界面),</p>
<p>之后經(jīng)過母貓一段時間的孕育(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一起的時間差不多夠了,就(打開新的Activity)把它關(guā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>不知道什么時候,主人又回來了,一邊敲籠子、一邊叫著Activity的名字(User navigates to the activity),</p>
<p>Activity被從美夢中拉回了現(xiàn)實世界,恢復了狀態(tài)(onRestart),然后醒來(onStart)睜開眼(onResume)...</p>
<p>就這樣不知不覺過了很久...</p>
<p> </p>
<p>有一次主人(按下主頁、多任務(wù)或電源按鈕)出遠門了,好久沒回來,家里的食物不夠,很快就被大家吃光了(Apps with higher priority need memory)。</p>
<p>由于Activity很弱小(優(yōu)先級低)、還被關(guān)在籠子里(沒有綁定前臺Service),所以吃到的食物很少。</p>
<p>幾頓饑渴后大家都餓昏了,紛紛進入休克狀態(tài)(App process killed)。</p>
<p>主人回來時看到可憐的Activity一動不動地躺著,怎么都叫不醒,就趕緊送去獸醫(yī)院搶救(User navigates to the activity)。</p>
<p>醫(yī)生給它輸了血和營養(yǎng)等(系統(tǒng)重新分給內(nèi)存),經(jīng)過一段時間后Activity終于復活了,它感覺好像重新從媽媽的肚子里出來一樣(onCreate)。</p>
<p>它醒來(onStart)睜開眼(onResume),和主人打打鬧鬧(Activity running),過了一會兒主人就帶著它回家了...</p>
<p> </p>
<p>俗話說,大難不死必有后福,之后主人確實對Activity照顧有加。</p>
<p>可是天有不測風云,有一天Activity被一個壞蛋弄死了(The activity is destroyed by the system)。</p>
<p>Activity死了(onDestroy),User很傷心地把它埋了(Activity shut down)...</p>
<p> </p>
<p>User很留戀和Activity在一起的時光,心有不甘,于是重新要了一只小貓,名字仍然叫Activity...</p>
<p>Activity一天天長大,主人對它非常寵愛,但它卻越來越叛逆。</p>
<p>終于有一天,主人受夠了,覺得Activity實在太可惡(或者沒有利用價值)就(點擊返回按鈕)把它拋棄了(The activity is finished)...</p>
<p>Activity不適應(yīng)外部惡劣的環(huán)境很快就死了(onDestroy),大自然用風和泥土把它埋葬(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)導致在onDestroy后運行崩潰;</p>
<p>還有線程管理類ThreadManager,BaseActivity、BaseFragment內(nèi)可以runThread(String tag, Runnable runnable)很方便地新開線程,</p>
<p>onDestroy后自動釋放,不用擔心直接new Thread(runnable).start()在onDestroy后還在運行浪費資源,甚至使用被回收的變量導致崩潰等問題。</p>
<p> </p>
<h1>ZBLibrary-Android快速開發(fā)框架</h1>
<p>

</p><strong>下載試用</strong><br /></p><a >ZBLibraryDemoApp.apk</a><br /><br /></p><strong>下載地址(覺得不錯就<strong>Star支持下吧_)</strong></strong>
</p><a >https://github.com/TommyLemon/Android-ZBLibrary</a></p>
<p> </p>