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

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

User覺得和Activity一起的時(shí)間差不多夠了,就(打開新的Activity)把它關(guān)進(jìn)籠子,和其它貓一邊玩去了(Another activity comes into the foreground)。
Activity就開始閉目養(yǎng)神(onPause)...
過了一會兒,主人打開籠子,呼喚它的名字(User returns to the activity),它聽到后馬上睜開眼(onResume)跑過去和主人玩耍(Activity running)...
后來主人又把它關(guān)起來然后走了,Activity繼續(xù)閉目養(yǎng)神(onPause)...
再后來主人把燈關(guān)了(The activity is no longer visible),Activity感覺天黑了就睡了(onStop)...
不知道什么時(shí)候,主人又回來了,一邊敲籠子、一邊叫著Activity的名字(User navigates to the activity),
Activity被從美夢中拉回了現(xiàn)實(shí)世界,恢復(fù)了狀態(tài)(onRestart),然后醒來(onStart)睜開眼(onResume)...
就這樣不知不覺過了很久...
有一次主人(按下主頁、多任務(wù)或電源按鈕)出遠(yuǎn)門了,好久沒回來,家里的食物不夠,很快就被大家吃光了(Apps with higher priority need memory)。
由于Activity很弱小(優(yōu)先級低)、還被關(guān)在籠子里(沒有綁定前臺Service),所以吃到的食物很少。
幾頓饑渴后大家都餓昏了,紛紛進(jìn)入休克狀態(tài)(App process killed)。
主人回來時(shí)看到可憐的Activity一動不動地躺著,怎么都叫不醒,就趕緊送去獸醫(yī)院搶救(User navigates to the activity)。
它醒來(onStart)睜開眼(onResume),和主人打打鬧鬧(Activity running),過了一會兒主人就帶著它回家了...
俗話說,大難不死必有后福,之后主人確實(shí)對Activity照顧有加。
可是天有不測風(fēng)云,有一天Activity被一個(gè)壞蛋弄死了(The activity is destroyed by the system)。
Activity死了(onDestroy),User很傷心地把它埋了(Activity shut down)...
User很留戀和Activity在一起的時(shí)光,心有不甘,于是重新要了一只小貓,名字仍然叫Activity...
Activity一天天長大,主人對它非常寵愛,但它卻越來越叛逆。
終于有一天,主人受夠了,覺得Activity實(shí)在太可惡(或者沒有利用價(jià)值)就(點(diǎn)擊返回按鈕)把它拋棄了(The activity is finished)...
Activity不適應(yīng)外部惡劣的環(huán)境很快就死了(onDestroy),大自然用風(fēng)和泥土把它埋葬(Activity shut down)...
這就是Activity貓的一生。
ZBLibrary提供了isAlive()、isRunning()等判斷Activity、Fragment生命周期狀態(tài)的方法;
以及runUiThread(Runnable runnable)方法來避免直接runOnUiThread(Runnable runnable)導(dǎo)致在onDestroy后運(yùn)行崩潰;
還有線程管理類ThreadManager,BaseActivity、BaseFragment內(nèi)可以runThread(String tag, Runnable runnable)很方便地新開線程,
onDestroy后自動釋放,不用擔(dān)心直接new Thread(runnable).start()在onDestroy后還在運(yùn)行浪費(fèi)資源,甚至使用被回收的變量導(dǎo)致崩潰等問題。
ZBLibrary-Android快速開發(fā)框架

下載試用
下載地址(覺得不錯就Star支持下吧^_^)
?https://github.com/TommyLemon/Android-ZBLibrary
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
Android中隱藏標(biāo)題欄和狀態(tài)欄的方法
Android中隱藏標(biāo)題欄和狀態(tài)欄的方法,需要的朋友可以參考一下2013-05-05
Android SQLite3多線程操作問題研究總結(jié)
這篇文章主要介紹了Android SQLite3多線程操作問題研究總結(jié),本文總結(jié)了SQLite3是否支持多線程、SQLiteDatabase的同步鎖、多線程讀數(shù)據(jù)庫等問題,需要的朋友可以參考下2015-03-03
Android游戲開發(fā)學(xué)習(xí)之引擎用法實(shí)例詳解
這篇文章主要介紹了Android游戲開發(fā)學(xué)習(xí)之引擎用法,較為詳細(xì)的分析了Android游戲開發(fā)中所常用的JBox2D引擎功能及相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
Android中ActionBar以及menu的代碼設(shè)置樣式
這篇文章主要介紹了Android中ActionBar以及menu的代碼設(shè)置樣式的相關(guān)資料,需要的朋友可以參考下2015-07-07
Android自定義TextView實(shí)現(xiàn)文字圖片居中顯示的方法
下面小編就為大家分享一篇Android自定義TextView實(shí)現(xiàn)文字圖片居中顯示的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Android開發(fā)之超實(shí)用的系統(tǒng)管理工具類【SD卡,網(wǎng)絡(luò),uri,屏幕,網(wǎng)絡(luò),軟鍵盤,文本,進(jìn)程等】
這篇文章主要介紹了Android開發(fā)之超實(shí)用的系統(tǒng)管理工具類,涉及Android針對SD卡,網(wǎng)絡(luò),uri,屏幕,網(wǎng)絡(luò),軟鍵盤,文本,進(jìn)程等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
android當(dāng)前apn的狀態(tài)以及獲取方法
在絕大多數(shù)android機(jī)器etc路徑下存放一個(gè)的apns-conf.xml文件,表示當(dāng)前機(jī)器使用的apn信息通過root機(jī)器可以push出來看看,具體路徑可以上網(wǎng)搜下,接下來介紹獲取apn的狀態(tài)的方法2013-01-01
實(shí)例詳解android studio如何導(dǎo)入.so文件的方法
通過實(shí)例給大家詳細(xì)講解了如何在android studio如何導(dǎo)入.so文件以及中間遇到的問題解決辦法,需要的讀者們可以仔細(xì)學(xué)習(xí)一下。2017-12-12
ViewPager頂部導(dǎo)航欄聯(lián)動效果(標(biāo)題欄條目多)
這篇文章主要介紹了ViewPager頂部導(dǎo)航欄聯(lián)動效果,代碼簡單易懂,感興趣的朋友參考下吧2016-08-08

