成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在 2016 年學(xué) Android 是一種什么樣的體驗(yàn)?

MonoLog / 1401人閱讀

摘要:當(dāng)然,目前看來(lái),的勢(shì)頭是蓋過(guò)的。平臺(tái)的插件化框架也是存在多種方案,各有優(yōu)劣。常見(jiàn)的攜程的,的,的以及等。另外,插件化也是解決問(wèn)題的一大利器。

在 2016 年學(xué) Android 是一種什么樣的體驗(yàn)?

@author ASCE1885的 Github 簡(jiǎn)書(shū) 微博 CSDN 知乎
本文由于潛在的商業(yè)目的,不開(kāi)放全文轉(zhuǎn)載許可,謝謝!

廣而告之時(shí)間:我的新書(shū)《Android 高級(jí)進(jìn)階》(https://item.jd.com/108219759... )在京東開(kāi)始預(yù)售了,歡迎訂購(gòu)!

轉(zhuǎn)眼間 2016 年的電量已不足 20%,不禁感慨 How Time Flies!不知不覺(jué) Android 移動(dòng)開(kāi)發(fā)已經(jīng)走過(guò)了八年的光陰,在這八年的時(shí)間中,Android 開(kāi)發(fā)從最初的簡(jiǎn)單調(diào)用系統(tǒng) API,到各類框架的不斷涌現(xiàn),再到如今的成熟階段,那么作為一個(gè)想在 2016 年開(kāi)始學(xué)習(xí) Android 或者重新開(kāi)始學(xué)習(xí) Android 的開(kāi)發(fā)者來(lái)說(shuō),你將看到一幅什么樣的光景呢?

首先你會(huì)發(fā)現(xiàn)最新的 Android 系統(tǒng)版本已經(jīng)是 7.0,作為大版本肯定存在很多變化和改進(jìn),開(kāi)發(fā)者需要持續(xù)跟進(jìn)這些變化,例如 Android 7.0 刪除了三個(gè)隱式廣播,優(yōu)化內(nèi)存使用和優(yōu)化電量消耗。再往前一個(gè)版本,Android 6.0 重新設(shè)計(jì)了權(quán)限系統(tǒng),一系列的權(quán)限不再簡(jiǎn)單的在 AndroidManifest.xml 文件中聲明就可以使用,而是要?jiǎng)討B(tài)申請(qǐng)。再往前一個(gè)版本,Android 5.0 引入了 Material Design,從此 Android 有了自己特有的設(shè)計(jì)語(yǔ)言和規(guī)范。

從集成開(kāi)發(fā)環(huán)境和構(gòu)建工具上面看,一兩年前還在茍延殘喘的 eclipse+ant 基本絕跡了,取而代之的是流行的 Android Studio +Gradle,截至本文發(fā)稿前,Android Studio 剛剛發(fā)布了 2.2.2 版本,對(duì)應(yīng)的 Gradle 版本為 2.14.1 版本。談到 Android 的構(gòu)建,除了 Gradle,你也可以嘗試 Facebook 的 Buck,雖然它的配置侵入性很強(qiáng),但構(gòu)建速度是比 Gradle 快很多的,當(dāng)然,如果使用最新的 Android Studio+Gradle,我們可以開(kāi)啟 Instant Run 模式,從而達(dá)到快速的重新構(gòu)建。

著名的 Support Library 已經(jīng)更新到 25.0.0,其中 support-v4 庫(kù)從 24.2.0 版本開(kāi)始就拆分成 5 個(gè)子庫(kù),開(kāi)發(fā)者可以更靈活的引用它。

什么?你還在使用 ListView,GridView?是時(shí)候使用 RecyclerView 進(jìn)行替換了,同時(shí)別忘了使用 Support Library 24.2.0 開(kāi)始引入的 DiffUtil 來(lái)高效更新 RecyclerView。

從搭建應(yīng)用的UI架構(gòu)開(kāi)始,我們不再考慮 MVC 模式,取而代之以 MVP 或者 MVVM 模式,Android 官方雖然對(duì)于 MVP 模式?jīng)]有統(tǒng)一的標(biāo)準(zhǔn),但還是提供了一系列使用例子 供開(kāi)發(fā)者作為實(shí)現(xiàn)參考。

至于 MVVM 模式,Android 官方提供了一個(gè)名為 DataBinding 函數(shù)庫(kù)作為標(biāo)準(zhǔn)實(shí)現(xiàn),相信后面會(huì)越來(lái)越多開(kāi)發(fā)者在項(xiàng)目中引入。

如果你已經(jīng)厭倦了使用 Java 來(lái)編寫(xiě) Android 應(yīng)用,沒(méi)有關(guān)系,你可以嘗試下 Kotlin,它可以比作 Android 世界的 Swift,目前已經(jīng)發(fā)布了 1.0.4 版本,支持多種現(xiàn)代的編程特性,例如函數(shù)式編程。同時(shí) 100% 支持和 Java 的混合編程,具有 Java 編程基礎(chǔ)的開(kāi)發(fā)者很容易上手。

如果你也不喜歡 Kotlin,但熟悉 Javascript 語(yǔ)言,那么推薦你試用下今年非常火爆的 React Native,它不僅可以使用 Javascript 語(yǔ)言編寫(xiě) Android 應(yīng)用,而且可以編寫(xiě) iOS 應(yīng)用,而且代碼復(fù)用高達(dá) 80% 左右,同時(shí),新功能的上線不再需要往應(yīng)用市場(chǎng)提交新的 APK 包,而是支持在線熱更新。當(dāng)然,React Native 寫(xiě)出來(lái)的界面是 Native 的體驗(yàn),不是 H5 的體驗(yàn)。

提起 React Native,我們不得不提到它的競(jìng)爭(zhēng)者 Weex,Weex 的基本原理和 React Native 一致,也是使用 Javascript 語(yǔ)言編寫(xiě) Android 和 iOS 應(yīng)用,不同的是,React Native 是基于 React 框架,Weex 是基于 Vue 框架。當(dāng)然,目前看來(lái),React Native 的勢(shì)頭是蓋過(guò) Weex 的。

前面我們提到過(guò) Kotlin 支持函數(shù)式編程,我的意思當(dāng)然不是說(shuō)使用 Java 語(yǔ)言就不能支持函數(shù)式的開(kāi)發(fā),但是就目前 Android 支持的 Java 版本,要支持函數(shù)式編程我們需要引入一個(gè)知名的函數(shù)庫(kù) RxJava,這是一個(gè)函數(shù)響應(yīng)式編程框架,采用觀察者設(shè)計(jì)模式,最直觀的,它能讓你的代碼避免回調(diào)地獄的出現(xiàn),使得代碼數(shù)據(jù)流向非常清晰,在 Android 中使用 RxJava,還需要引入 RxAndroid 作為橋接,當(dāng)然,還存在 RxBus,RxBinding 等等擴(kuò)展函數(shù)庫(kù)。

說(shuō)起這兩年 Android 開(kāi)發(fā)的變化,你會(huì)發(fā)現(xiàn)熱修復(fù)框架的如春筍般涌現(xiàn),你之前可能知道 Dexposed,AndFix,Nuwa 等,但最近幾個(gè)月出現(xiàn)的新美大 Robust,微信的 Tinker,手機(jī) QQ 的 QFix 等方案你是否了解和對(duì)比過(guò)?

我們知道熱修復(fù)是用來(lái)在線修復(fù)嚴(yán)重性的 bug,那么 Android Native 代碼如何實(shí)現(xiàn)功能模塊的在線更新呢?這就需要涉及插件化框架的概念了。Android 平臺(tái)的插件化框架也是存在多種方案,各有優(yōu)劣。常見(jiàn)的攜程的 DynamicAPK,360 的 DroidPlugin,iReader 的 ZeusPlugin 以及 Small 等。另外,插件化也是解決 64K 問(wèn)題的一大利器。

另外一個(gè)和熱修復(fù)容易混淆的概念是應(yīng)用的增量更新,增量更新的意思是應(yīng)用在自動(dòng)更新時(shí)下載的 APK 不是全量的,而是一個(gè)差分包,下載完成合并后再進(jìn)行安裝,可以看到,熱修復(fù)和增量更新最大的區(qū)別是應(yīng)用更新后是否需要重新安裝。

上面說(shuō)到的熱修復(fù),插件化更新,增量更新,都依賴于應(yīng)用啟動(dòng)后去服務(wù)端下載對(duì)應(yīng)的更新包,那么如果應(yīng)用啟動(dòng)時(shí)去讀取本地緩存或者數(shù)據(jù)庫(kù)等數(shù)據(jù),由于文件損壞或者數(shù)據(jù)格式不正確,可能會(huì)導(dǎo)致應(yīng)用啟動(dòng)必然閃退,因此,我們還需要引入啟動(dòng)保護(hù)機(jī)制來(lái)清除緩存數(shù)據(jù)從而保證應(yīng)用可以正常啟動(dòng)。

對(duì)了,應(yīng)用底層基礎(chǔ)函數(shù)庫(kù)也發(fā)生了很大變化,網(wǎng)絡(luò)通信庫(kù) android-async-http 已不再是流行,OkHttp+Retrofit 是主流的選擇,圖片加載和緩存框架 Android-Universal-Image-Loader 也已經(jīng)落伍了,Glide,F(xiàn)resco 等是更優(yōu)的選擇。其他流行的底層函數(shù)庫(kù)還有依賴注入框架 Dagger2,事件總線框架 EventBus,數(shù)據(jù)庫(kù) ORM 框架 greenDAO,就連日志記錄函數(shù)庫(kù)也涌現(xiàn)了不少,其中以 Timber,Hugo,logger 最有代表性。

2017 年還將會(huì)有哪些新技術(shù)或者新的變化出現(xiàn)呢?讓我們拭目以待吧!

歡迎關(guān)注我的微信公眾號(hào) ASCE1885,專注與原創(chuàng)或者分享 Android,iOS,ReactNative,Web 前端移動(dòng)開(kāi)發(fā)領(lǐng)域高質(zhì)量文章,主要包括業(yè)界最新動(dòng)態(tài),前沿技術(shù)趨勢(shì),開(kāi)源函數(shù)庫(kù)與工具等。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65199.html

相關(guān)文章

  • 2017年3月份前端資源分享

    平日學(xué)習(xí)接觸過(guò)的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進(jìn)擊的 Promise Effective JavaScript leeheys blog -...

    ermaoL 評(píng)論0 收藏0
  • 2017年3月份前端資源分享

    平日學(xué)習(xí)接觸過(guò)的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進(jìn)擊的 Promise Effective JavaScript leeheys blog -...

    kamushin233 評(píng)論0 收藏0
  • 2017年3月份前端資源分享

    平日學(xué)習(xí)接觸過(guò)的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進(jìn)擊的 Promise Effective JavaScript leeheys blog -...

    yy736044583 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<