? ? ? ? 續(xù)板壮。前幾天是18周歲生日,偷懶了一陣子枝嘶。今天繼續(xù)填坑帘饶。
? ? ? ? 今天準(zhǔn)備講幾個剛?cè)腴T就會碰到但是概念又很深奧難懂的幾個名詞。
? ? ? ? 1群扶、Activity及刻。這單詞我也知道啊是活動的意思,但是它在Android里面起到哪些作用呢竞阐?為什么會用Java語言來書寫呢缴饭?Activity的生命周期有哪些用途呢?我們一一理解骆莹。
? ? ? ? 首先颗搂,Activity在Android中的作用就是呈現(xiàn)一個屏幕給用戶。通常情況下MainActivity呈現(xiàn)的是我們應(yīng)用的主頁幕垦。比如說傅联,我們在主頁上面放置一個按鈕疚察,點(diǎn)擊按鈕之后讓應(yīng)用跳轉(zhuǎn)到指定的頁面蒸走。這里就有兩個Activity稍浆,一個是主頁的MainActivity载碌,另一個是跳轉(zhuǎn)到的目標(biāo)Activity。粗淺地理解的話衅枫,Activity相當(dāng)于一個模塊嫁艇,多個Activity組合起來形成了一個具有完整功能的APP弦撩。從代碼來分析,Activity的onCreate方法中必須要有一行:setContentView(R.layout.xxx); 這行代碼就是把這個Activity連接到我們做好的一個layout里面益楼,從而展示這個layout猾漫。我們?nèi)粘J褂肁PP中碰到的多數(shù)頁面跳轉(zhuǎn)的場景,就是Activity之間的跳轉(zhuǎn)感凤。
? ? ? ? 那么悯周,為什么Activity會放在src/java目錄下呢?我們學(xué)習(xí)的Java基礎(chǔ)就是用來在Activity里面完善Activity的各種功能禽翼。其中涉及到Activity的繼承族跛、控件的繼承......繼承這個詞是Java這一面向?qū)ο蟮木幊陶Z言的一大特征,Android的各種功能礁哄,都是基于Java來運(yùn)行的。有Java基礎(chǔ)的同學(xué)應(yīng)該都知道Java可以定義很多個“類”桐绒,類可以被繼承。從源代碼來看茉继,Activity繼承自Contex(這也是個很重要的點(diǎn),以后要解釋的)馒疹,Context的父類是Object,Object是Java所有類的祖先生均。所以可以看到Activity本質(zhì)上就是Java的一個類听想。所以用Java來書寫马胧。
? ? ? ? (拓展一下下)那么,src/java目錄下全部都是Activity么蛙粘?當(dāng)然不是。類是可以創(chuàng)造的出牧,我們可以寫一個類歇盼,把不同Activity需要用到的功能函數(shù)寫在這個類里面,再到Activity里面去調(diào)用這些函數(shù)豹缀,這樣就減少了相同代碼的重復(fù)書寫。我們也可以public一個自定義控件邢笙,在自定義控件里面自由發(fā)揮,這樣才能實(shí)現(xiàn)種種復(fù)雜的UI界面氮惯。
? ? ? ? 那么,Activity的生命周期如何理解呢?生命周期的圖表示起來很復(fù)雜江滨,但是實(shí)際用到就很好理解了。還是一開始的例子唬滑,從MainActivity跳轉(zhuǎn)到指定的Activity后,MainActivity暫時沒有什么卵用了擒悬,如果再把它作為活動Activity的話稻艰,就白白占用系統(tǒng)資源了懂牧,所以會執(zhí)行onStop(),或者也可以根據(jù)場景選用onPause()畜侦。你可能覺得反正現(xiàn)在硬件這么厲害,這樣應(yīng)該沒什么吧旋膳。這顯然是不可能的途事,如果不把東西搬到后臺,開幾個程序系統(tǒng)就吃不消了尸变,所以系統(tǒng)有一個完整的管理機(jī)制,就是生命周期振惰。嚴(yán)謹(jǐn)管理Activity的生命周期,其實(shí)有利于開發(fā)者對項目的層級的理解骑晶,這樣出事情也知道應(yīng)該往哪個方向去找Bug。
? ? ? ? 在產(chǎn)品級的開發(fā)過程中匙头,Activity要比我們上面說的復(fù)雜得多仔雷。在初學(xué)的時候蹂析,按照這樣說的去理解Activity碟婆,可以更好的理解Android這一套龐大的體系。希望對同學(xué)們有所幫助蝙叛。
? ? ? ? 2017-8-6