android進階筑基篇一

該系列文章從androidx,jetpack開始對安卓技術(shù)做一遍更新梳理抗蠢。因入行較早公司技術(shù)又相對比較老褒繁,目前技術(shù)已經(jīng)陳舊到再不升級亦鳞,即使不需要后浪,自己也可以把自己拍死了棒坏。技術(shù)梳理以Kotlin作為開發(fā)語言前提燕差。首先從了解Androidx相關依賴庫開始切入。

第一步:需要關注的就是Activity和Fragment

androidx.core庫中引入CompnentActivity坝冕,作為所有新框架的積累庫徒探,拓展了LifecycleOwner和KeyEventDispatcher.Component接口。

androidx.activity庫喂窟,引用了core中的CompnentActivity测暗,名稱相同,作為基類使用谎替,主要實現(xiàn)Lifecycle偷溺、ViewModel等jetpack相關框架的集成蹋辅。

androidx.activity拓展activity-ktx庫钱贯,添加了兩個Kotlin擴展方法,不對整體Activity結(jié)構(gòu)造成影響侦另。

androidx.fragment框架中FragmentActivity使用androidx.activity中CompnentActivity秩命,不再使用系統(tǒng)中自帶的Fragment,以及support中Fragment褒傅。主要對Fragment進行相關管理弃锐。

android.appcompat包中的AppCompatActivity繼承自FragmentActivity。主要添加ActionBar等AppCompat相關特性殿托。開發(fā)應用時主要繼承該Activity.霹菊。繼承后可使用Jetpack、Appcompat等系列框架特性支竹。應用開發(fā)中Fragment主要繼承androidx.fragment中Fragment旋廷。

第二步:了解了Fragment和Activity的相關關聯(lián)關系之后就可以開始Jetpack具體組件相關的開發(fā)了。最先需要使用和梳理的就是Lifecycle礼搁、ViewModel和Livedata饶碘。按照谷推薦框架,還需要使用Room框架馒吴,目前從關聯(lián)關系及對項目的框架影響考慮扎运,該框架可分開獨立研究瑟曲,不影響整體使用。其中最基礎的是Lifecycle豪治,因viewmodel和livedata對lifecycle有依賴洞拨。

首先,研究Lifecycle的使用及源碼邏輯负拟。在第一步中已經(jīng)描述到框架中基礎Activity已經(jīng)實現(xiàn)了Lifecycle相關接口扣甲,這其中包括基礎Fragment也已經(jīng)實現(xiàn)相關接口。Lifecycle最主要的組成部分為:LifecycleOwner齿椅、LifecycleObserver琉挖。原理為使用觀察者模式,因Activity及Fragment已經(jīng)實現(xiàn)了LIfecycleOwner涣脚,我們不需要關注該實現(xiàn)步驟示辈,直接將Activity\Fragment認定為被觀察者。開發(fā)只需要實現(xiàn)觀察者即可遣蚀。實現(xiàn)步驟為:1矾麻、創(chuàng)建一個實現(xiàn)了LifecycleObserver接口的類,將需要觀察的某個生命周期用注解的方式標注芭梯,如:@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)险耀、 @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)、@OnLifecycleEvent(Lifecycle.Event.ON_ANY)玖喘,2甩牺、將該類注冊到被觀察者中,用于將觀察者與被觀察者建立關聯(lián)關系累奈。代碼如:getLifecycle().addObserver(XXX) 完成以上步驟即可在被觀察者發(fā)生相應的生命周期變動時贬派,在觀察者類中收到相關生命周期變化的通知。

其次需要梳理Viewmodel澎媒,該框架背后的MVVM思想的使用涉及的開發(fā)語言范圍已經(jīng)很廣泛搞乏。在其他開發(fā)體系中已經(jīng)有大量實踐。在前端研發(fā)及設計中參考數(shù)據(jù)驅(qū)動視圖思想及實現(xiàn)方案戒努,已經(jīng)成為前端研發(fā)的必經(jīng)之路请敦。主要組成部分為ViewModelStoreOwner、ViewModelProvider储玫。其中框架中Activity/Fragment已繼承實現(xiàn)ViewModelStoreOwner侍筛。該接口持有ViewModelStore,而ViewModelStore持有該頁面中的ViewModel缘缚。需要使用或者實現(xiàn)VIewModel時勾笆,通過ViewModelProvider來實例化一個XXXVIewModel(繼承VIewModel)及將其與容器相關聯(lián),

java實現(xiàn)方式new ViewModelProvider(getActivity()/this).get(XXXViewModel.class)

kotlin實現(xiàn)方式:by viewModels<XXXViewModel>

該邏輯的實現(xiàn)意味著你可以在容器中找到和使用一份獨立的數(shù)據(jù)而無需擔心數(shù)據(jù)受頁面生命周期相關的影響桥滨。viewmodel作為view與model之間的橋梁窝爪。將model綁定到view的全生命周期中弛车。需要使用數(shù)據(jù)時直接通過viewmodel獲取即可。

最后需要梳理LiveData蒲每,同樣使用觀察者模式纷跛,被觀察者為LifecycleOwner,框架中已經(jīng)實現(xiàn)該接口邀杏。觀察者為LiveData贫奠,LiveData中的數(shù)據(jù)從泛型約束中傳入。建立關聯(lián)關系的方式為1望蜡、實例化LiveData唤崭、2、liveData.observer(被觀察者,觀察callback)脖律。當數(shù)據(jù)發(fā)生變化時被觀察者通知數(shù)據(jù)發(fā)生變更livedata.setValue(數(shù)據(jù)變化)谢肾。整個原理及實現(xiàn)架構(gòu)同lifevycle類似。

第三部:代碼實戰(zhàn)小泉。

以上框架模塊均在lifecycle庫中芦疏。所以放在一起學習,掌握了基本的項目框架組件就可以開始項目實戰(zhàn)了微姊。推薦谷歌官方demo酸茴,當遇到其他庫方法時,可以直接學習了解相關庫兢交。新項目引入androidx薪捍,在實戰(zhàn)過程中,穿插學習其他androidx庫魁淳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末飘诗,一起剝皮案震驚了整個濱河市与倡,隨后出現(xiàn)的幾起案子界逛,更是在濱河造成了極大的恐慌,老刑警劉巖纺座,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件息拜,死亡現(xiàn)場離奇詭異,居然都是意外死亡净响,警方通過查閱死者的電腦和手機少欺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馋贤,“玉大人赞别,你說我怎么就攤上這事∨渑遥” “怎么了仿滔?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵惠毁,是天一觀的道長。 經(jīng)常有香客問我崎页,道長鞠绰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任飒焦,我火速辦了婚禮蜈膨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牺荠。我一直安慰自己翁巍,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布休雌。 她就那樣靜靜地躺著曙咽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挑辆。 梳的紋絲不亂的頭發(fā)上例朱,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音鱼蝉,去河邊找鬼洒嗤。 笑死,一個胖子當著我的面吹牛魁亦,可吹牛的內(nèi)容都是我干的渔隶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼洁奈,長吁一口氣:“原來是場噩夢啊……” “哼间唉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起利术,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤呈野,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后印叁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體被冒,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年轮蜕,在試婚紗的時候發(fā)現(xiàn)自己被綠了昨悼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡跃洛,死狀恐怖率触,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汇竭,我是刑警寧澤葱蝗,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布痊剖,位于F島的核電站,受9級特大地震影響垒玲,放射性物質(zhì)發(fā)生泄漏陆馁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一合愈、第九天 我趴在偏房一處隱蔽的房頂上張望叮贩。 院中可真熱鬧,春花似錦佛析、人聲如沸益老。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捺萌。三九已至,卻和暖如春膘茎,著一層夾襖步出監(jiān)牢的瞬間桃纯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工披坏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留态坦,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓棒拂,卻偏偏與公主長得像伞梯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子帚屉,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容