正式發(fā)布 Android 架構(gòu)組件 1.0 穩(wěn)定版 | 附帶中文介紹視頻


幾十億的設(shè)備都在用 Android 系統(tǒng)堵第,從高端手機(jī)到飛機(jī)上的影音娛樂(lè)系統(tǒng)矾芙,應(yīng)有盡有脖岛,不一而足朵栖。而 Android OS 則為這幾十億的設(shè)備保駕護(hù)航,高效管理資源柴梆,保障運(yùn)行流暢陨溅,然而有時(shí)候卻增加了開(kāi)發(fā)卓越 App 的難度。為了簡(jiǎn)化開(kāi)發(fā)流程绍在,我們?cè)?Google I/O 大會(huì)上發(fā)布了架構(gòu)組件(Architecture Components)的預(yù)覽版门扇,為 App 開(kāi)發(fā)構(gòu)架提供指南雹有,并為常見(jiàn)任務(wù),如生命周期管理臼寄、數(shù)據(jù)持久性等提供了一系列庫(kù)霸奕。有了這些基礎(chǔ)組件的幫助,開(kāi)發(fā)者能夠使用更少的樣板代碼寫(xiě)出模塊化 App吉拳,將精力用于創(chuàng)新而非重復(fù)體力勞動(dòng) —— 我們也會(huì)在今后繼續(xù)完善這一基礎(chǔ)架構(gòu)质帅。

今天我們很高興地宣布 Room 和生命周期管理(Lifecycles)的架構(gòu)組建庫(kù) 1.0 穩(wěn)定版正式發(fā)布,其 API 已經(jīng)可以在生產(chǎn)環(huán)境的 App 和庫(kù)中使用留攒,并且我們強(qiáng)烈建議在 App 架構(gòu)和本地儲(chǔ)存方面需要幫助的開(kāi)發(fā)者使用這些 API (只是推薦使用煤惩,并不硬性要求)。此外生命周期管理同時(shí)也已集成到支持庫(kù)中(Support Library)炼邀,因此開(kāi)發(fā)者也可以在標(biāo)準(zhǔn)類別里盟庞,如 AppCompatActivity 中使用這些 API。

雖然我們今日才發(fā)布穩(wěn)定版汤善,其測(cè)試版組件早已被整合進(jìn)達(dá)十億量級(jí)下載的 App 中什猖。架構(gòu)組件幫助很多頂級(jí)開(kāi)發(fā)團(tuán)隊(duì),如 Zapppos红淡,將更多的時(shí)間集中在更為關(guān)鍵的工作中不狮。

在架構(gòu)組件發(fā)布之前,我們有自己的 ViewModel 實(shí)現(xiàn)在旱,通過(guò)加載器(Loader) 和依賴注入(Dependency Injection)保證即使配置更改后摇零,ViewModel 依舊不變。我們最近轉(zhuǎn)用了架構(gòu)組件中的 ViewModel 實(shí)現(xiàn)桶蝎,并完全擺脫了重復(fù)工作驻仅,我們發(fā)現(xiàn)可以將更多的時(shí)間用于設(shè)計(jì)、業(yè)務(wù)邏輯和測(cè)試登渣,而不是浪費(fèi)在樣板代碼或擔(dān)心 Android 生命周期的問(wèn)題上噪服。

同時(shí)我們也開(kāi)始借助 LiveData —— 一個(gè)可以感知 Activity 生命周期的數(shù)據(jù)容器 —— 用于獲取和顯示網(wǎng)絡(luò)數(shù)據(jù),而不用再擔(dān)心網(wǎng)絡(luò)調(diào)用的訂閱管理胜茧。 —— David Henry粘优,Zappos 的 Android 軟件工程師

架構(gòu)組件提供簡(jiǎn)單、靈活而且操作性高的方法呻顽,解決開(kāi)發(fā)者遇到的常見(jiàn)問(wèn)題雹顺,讓他們可以專注于打造一流的用戶體驗(yàn)。在其背后廊遍,我們通過(guò) App 架構(gòu)指南嬉愧,將多個(gè)核心構(gòu)建單元捆綁在一起。

Lifecycles


每個(gè) Android 開(kāi)發(fā)者都應(yīng)該面對(duì)過(guò)生命周期問(wèn)題喉前,即操作系統(tǒng)啟動(dòng)没酣、停止和銷毀 Activity王财。這意味著開(kāi)發(fā)者需要根據(jù)生命周期的不同階段,有針對(duì)性地管理組件狀態(tài)四康,比如用于更新用戶界面的可觀察對(duì)象搪搏。生命周期管理(Lifecycles)幫助開(kāi)發(fā)者創(chuàng)建 “可感知生命周期的”組件,讓其自己管理自己的生命周期闪金,從而減少內(nèi)存泄露和崩潰的可能性疯溺。生命周期庫(kù)是其他架構(gòu)組件(如 LiveData)的基礎(chǔ)。

了解更多Lifecycles相關(guān)內(nèi)容:

https://developer.android.google.cn/topic/libraries/architecture/lifecycle.html

LiveData

LiveData 是一款基于觀察者模式的可感知生命周期的核心組件哎垦。LiveData 為界面代碼 (Observer)的監(jiān)視對(duì)象 (Observable)囱嫩,當(dāng) LiveData 所持有的數(shù)據(jù)改變時(shí),它會(huì)通知相應(yīng)的界面代碼進(jìn)行更新漏设。同時(shí)墨闲,LiveData 持有界面代碼 Lifecycle 的引用,這意味著它會(huì)在界面代碼(LifecycleOwner)的生命周期處于 started 或 resumed 時(shí)作出相應(yīng)更新郑口,而在 LifecycleOwner 被銷毀時(shí)停止更新鸳碧。通過(guò) LiveData,開(kāi)發(fā)者可以方便地構(gòu)建安全性更高犬性、性能更好的高響應(yīng)度用戶界面瞻离。

了解更多 LiveData 相關(guān)內(nèi)容:

https://developer.android.google.cn/topic/libraries/architecture/livedata.html

ViewModel

ViewModel 將視圖的數(shù)據(jù)和邏輯從具有生命周期特性的實(shí)體(如 Activity 和 Fragment)中剝離開(kāi)來(lái)。直到關(guān)聯(lián)的 Activity 或 Fragment 完全銷毀時(shí)乒裆,ViewModel 才會(huì)隨之消失套利,也就是說(shuō),即使在旋轉(zhuǎn)屏幕導(dǎo)致 Fragment 被重新創(chuàng)建等事件中鹤耍,視圖數(shù)據(jù)依舊會(huì)被保留肉迫。ViewModels 不僅消除了常見(jiàn)的生命周期問(wèn)題,而且可以幫助構(gòu)建更為模塊化稿黄、更方便測(cè)試的用戶界面喊衫。

了解更多 ViewModel相關(guān)內(nèi)容:

https://developer.android.google.cn/topic/libraries/architecture/viewmodel.html

Room

幾乎所有 App 都需要在本地儲(chǔ)存數(shù)據(jù)。自從最早版本開(kāi)始抛猖,Android 就提供了 SQLite格侯,但是直接使用 SQLite是件苦差事。因此财著,我們推出了Room,一款簡(jiǎn)單好用的對(duì)象映射層撑碴。它和 SQLite 有一樣強(qiáng)大的功能撑教,但是節(jié)省了很多重復(fù)編碼的麻煩事兒。它的一些功能醉拓,如編譯時(shí)的數(shù)據(jù)查詢驗(yàn)證伟姐、內(nèi)置遷移支持等收苏,讓開(kāi)發(fā)者能夠更簡(jiǎn)單地構(gòu)建健壯的持久層。而且 Room 可以和 LiveData 集成在一起愤兵,提供可觀測(cè)數(shù)據(jù)庫(kù)并感知生命周期的對(duì)象鹿霸。Room 集簡(jiǎn)潔、強(qiáng)大和可靠性為一身秆乳,在管理本地儲(chǔ)存上表現(xiàn)卓越懦鼠,我們強(qiáng)烈推薦各位開(kāi)發(fā)者試用一下。

了解更多Room相關(guān)內(nèi)容:

https://developer.android.google.cn/topic/libraries/architecture/room.html

App 架構(gòu)指南以及更多訊息

最后還有一個(gè)要點(diǎn)得說(shuō)明一下:我們撰寫(xiě)了 “App 架構(gòu)指南”屹堰,涵蓋數(shù)條適用于所有開(kāi)發(fā)者的關(guān)鍵原則以及針對(duì)架構(gòu)組件的具體指導(dǎo)肛冶。因?yàn)橛虚_(kāi)發(fā)者向我們反映,清晰扯键、連貫的指南文檔很重要睦袖,因此我們現(xiàn)在更新了開(kāi)發(fā)者文檔,在適當(dāng)之處指明架構(gòu)組件荣刑。此外馅笙,我們還在官網(wǎng)發(fā)布了一系列相關(guān)視頻、codelab 和 App 樣本厉亏,并且會(huì)陸續(xù)補(bǔ)充董习。

App 架構(gòu)指南:

https://developer.android.google.cn/topic/libraries/architecture/guide.html

Android 架構(gòu)組件官網(wǎng):

https://developer.android.google.cn/topic/libraries/architecture/index.html

繼續(xù)注意此領(lǐng)域

盡管首套架構(gòu)組件已經(jīng)發(fā)布穩(wěn)定版,我們深知路漫漫其修遠(yuǎn)兮叶堆。在過(guò)去的幾個(gè)月中阱飘,我們正對(duì)各位提出的反饋,認(rèn)真作出改進(jìn)虱颗。在最近通過(guò) Alpha 測(cè)試版渠道沥匈,我們還發(fā)布了新組件 —— PagedList,解決大家用 RecyclerView 處理大數(shù)據(jù)集的困難忘渔。旅途才剛剛開(kāi)始高帖,我們還有更多重要組件還在開(kāi)發(fā)階段,有望在未來(lái)的幾個(gè)月和大家見(jiàn)面畦粮。

了解更多PagedList內(nèi)容:

https://developer.android.google.cn/topic/libraries/architecture/paging.html

提交反饋:

https://developer.android.google.cn/topic/libraries/architecture/feedback.html


我們希望架構(gòu)組件能夠解放開(kāi)發(fā)者散址,讓各位能夠?qū)W⒂趧?chuàng)新,打造移動(dòng)端獨(dú)一無(wú)二的新體驗(yàn)宣赔。我們很高興最終發(fā)布可用于生產(chǎn)環(huán)境的穩(wěn)定版本预麸。在此,我們特別要感謝開(kāi)發(fā)者一直以來(lái)提供的寶貴建議儒将,希望各位在下方討論區(qū)踴躍留言吏祸。

各位一直翹首以盼穩(wěn)定版的朋友們,何不今天就開(kāi)始下載使用钩蚊?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贡翘,一起剝皮案震驚了整個(gè)濱河市蹈矮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸣驱,老刑警劉巖泛鸟,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異踊东,居然都是意外死亡北滥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)递胧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)碑韵,“玉大人,你說(shuō)我怎么就攤上這事缎脾∽N牛” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵遗菠,是天一觀的道長(zhǎng)联喘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)辙纬,這世上最難降的妖魔是什么豁遭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮贺拣,結(jié)果婚禮上蓖谢,老公的妹妹穿的比我還像新娘。我一直安慰自己譬涡,他們只是感情好闪幽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著涡匀,像睡著了一般盯腌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陨瘩,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天腕够,我揣著相機(jī)與錄音,去河邊找鬼舌劳。 笑死帚湘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的甚淡。 我是一名探鬼主播客们,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼材诽!你這毒婦竟也來(lái)了底挫?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脸侥,失蹤者是張志新(化名)和其女友劉穎建邓,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體睁枕,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡官边,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了外遇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片注簿。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖跳仿,靈堂內(nèi)的尸體忽然破棺而出诡渴,到底是詐尸還是另有隱情,我是刑警寧澤菲语,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布妄辩,位于F島的核電站,受9級(jí)特大地震影響山上,放射性物質(zhì)發(fā)生泄漏眼耀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一佩憾、第九天 我趴在偏房一處隱蔽的房頂上張望哮伟。 院中可真熱鬧,春花似錦妄帘、人聲如沸楞黄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谅辣。三九已至,卻和暖如春婶恼,著一層夾襖步出監(jiān)牢的瞬間桑阶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工勾邦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚣录,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓眷篇,卻偏偏與公主長(zhǎng)得像萎河,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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