Android高工必備技能!

Step 1. 玩轉(zhuǎn)RxJava

使用RxJava處理異步極其方便,各種操作符可以對(duì)數(shù)據(jù)做流水線式操作,再加上與Retrofit的結(jié)合,使得Andorid開(kāi)發(fā)變的極其簡(jiǎn)單。唯一美中不足的就是RxJava不符合我們以往的編程思想,學(xué)習(xí)Rxjava存在一定的難度,很多工程師對(duì)Rxjava都不能完全理解。不過(guò),相信以下2個(gè)內(nèi)容會(huì)讓你對(duì)Rxjava的使用有一個(gè)更清晰的認(rèn)識(shí)。

  1. 給 Android 開(kāi)發(fā)者的 RxJava 詳解
  2. 開(kāi)源項(xiàng)目Hello—RxJava讓你徹底明白R(shí)xJava的異步編程。
可以清晰看到操作都發(fā)生在什么線程中

項(xiàng)目地址:https://github.com/xinghongfei/Hello-RxJava

Step 2. 自定義view

自定義View主要掌握以下四部分內(nèi)容:

  • 繪制機(jī)制:掌握onMeasure,onLayout,onDraw及相關(guān)類(lèi)的使用。
  • 事件傳遞機(jī)制:掌握dispathTouchEvent(),onInterceptEvent(),onTouchEvent()三者的相關(guān)邏輯.
  • 屬性動(dòng)畫(huà):因?yàn)閷傩詣?dòng)畫(huà)核心是對(duì)數(shù)值的變化。自定義View中使用屬性動(dòng)畫(huà)很方便對(duì)數(shù)值進(jìn)行變換。
  • 相關(guān)手勢(shì)類(lèi)。
你需要的東西都在這里https://github.com/xinghongfei/awesome-view

Step 3. 進(jìn)程間通信與進(jìn)程保活

  1. 進(jìn)程間通信
    進(jìn)程間通信通常通過(guò)以下7種手段:
  • Bundle:主要是放在Intent中,在四大組件間傳遞。
  • 文件共享:一個(gè)進(jìn)程寫(xiě)文件,一個(gè)進(jìn)程讀文件。
  • SharedPreferences: 不支持并發(fā),底層基于xml。
  • Messenger:底層是通過(guò)IPC進(jìn)行通信的,主要是進(jìn)程間傳遞數(shù)據(jù),不支持并發(fā)。
  • Socket:基于TCP協(xié)議。
  • AIDL: 支持并發(fā),一個(gè)進(jìn)程可以調(diào)用另一個(gè)進(jìn)程的方法。
  • ContentProvider:不同的應(yīng)用間數(shù)據(jù)共享。
    詳解:《Android開(kāi)發(fā)藝術(shù)探究》進(jìn)程間通信讀書(shū)筆記

2.進(jìn)程保活

(我的學(xué)習(xí)過(guò)程是從入門(mén)到放棄:大家只做了解,初步理解原理即可)
Android 進(jìn)程保活招式大全

論Android應(yīng)用進(jìn)程長(zhǎng)存的可行性

微信Android客戶(hù)端后臺(tái)?;罱?jīng)驗(yàn)分享

開(kāi)源項(xiàng)目Hello-Daemon

daemon.gif

項(xiàng)目地址https://github.com/xinghongfei/Hello-Daemon

Step 4. 熱修復(fù)

線上程序出現(xiàn)bug,必須要有妙手回春的本事,想成為一名Andorid高工,這是必備技能。

現(xiàn)在市面上熱修復(fù)框架很多,以下是常見(jiàn)的四種。

Tinker QZone AndFix Dexposed
類(lèi)替換 yes yes no no
So替換 yes no no no
資源替換 yes yes no no
全平臺(tái)支持 yes yes yes no
即時(shí)生效 no no yes yes
性能損耗 較小 較大 較小 較小
補(bǔ)丁包大小 較小 較大 一般 一般
開(kāi)發(fā)透明 yes yes no no
復(fù)雜度 較低 較低 復(fù)雜 復(fù)雜
gradle支持 yes no no no
接口文檔 豐富 較少 一般 較少
Rom體積 Dalvik較大 較小 較小 較小
成功率 較高 最高 一般 一般

總的來(lái)說(shuō):

  1. Dexposed無(wú)法支持全平臺(tái),并不適合應(yīng)用到商業(yè)產(chǎn)品中。
  2. AndFix作為native解決方案,首先面臨的是穩(wěn)定性與兼容性問(wèn)題,更重要的是它無(wú)法實(shí)現(xiàn)類(lèi)替換,它是需要大量額外的開(kāi)發(fā)成本的。
  3. QZone方案主要問(wèn)題是插樁帶來(lái)Dalvik的性能問(wèn)題,以及為了解決Art下內(nèi)存地址問(wèn)題而導(dǎo)致補(bǔ)丁包急速增大的。
    Tinker熱補(bǔ)丁方案不僅支持類(lèi)、So以及資源的替換,它還是2.X-7.X的全平臺(tái)支持。它無(wú)需插樁,補(bǔ)丁大小也遠(yuǎn)遠(yuǎn)小于其他方案。Tinker已運(yùn)行在微信的數(shù)億Android設(shè)備上。

Android 熱補(bǔ)丁動(dòng)態(tài)修復(fù)框架小結(jié)
Android熱補(bǔ)丁動(dòng)態(tài)修復(fù)技術(shù)系列
安卓App熱補(bǔ)丁動(dòng)態(tài)修復(fù)技術(shù)介紹

下面這個(gè)項(xiàng)目是一個(gè)基于熱修復(fù)框架TinkerDemo,并總結(jié)了一些常見(jiàn)的問(wèn)題。

tinker.gif

項(xiàng)目地址https://github.com/xinghongfei/Hello-Tinker

Step 5. 架構(gòu)

常見(jiàn)的架構(gòu)有:MVC,MVP,MVVM。使用最多的就是MVC架構(gòu)了,現(xiàn)在很多應(yīng)用也使用MVP架構(gòu),MVVM用的還很少。

architucture.png

Android App的設(shè)計(jì)架構(gòu):MVC,MVP,MVVM與架構(gòu)經(jīng)驗(yàn)談
Google的android-architecture
Android Data Binding

下面這個(gè)項(xiàng)目是一個(gè)特別簡(jiǎn)單的MVP架構(gòu)框架,模擬文件下載。

mvp.gif

項(xiàng)目地址https://github.com/xinghongfei/Hello-MVP

Step 6. 整理中,敬請(qǐng)期待

Step 7.敬請(qǐng)期待

結(jié)語(yǔ):為了收集整理這些東西,基本上整個(gè)國(guó)慶假期的時(shí)間和精力都花費(fèi)在這個(gè)上面,希望會(huì)對(duì)大家有幫助,未來(lái)會(huì)不斷的完善。如果你喜歡我的文章,可以關(guān)注我的Github,掘金,簡(jiǎn)書(shū),????,后續(xù)會(huì)分享更多精彩的內(nèi)容。祝好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容