Android程序員自我修養(yǎng)

Android程序員自我修養(yǎng)

1. Android-Universal-Image-Loader

github地址

https://github.com/nostra13/Android-Universal-Image-Loader

介紹

老牌的圖片異步加載框架

重點(diǎn)

  • 整個(gè)框架分多少個(gè)模塊,每個(gè)模塊的作用是什么

  • 如何僅通過interface就將框架的整個(gè)流程串聯(lián)起來

  • 如何進(jìn)行內(nèi)存管理的,LRU是種什么算法,有沒有比LRU更好的?

  • 用到了多少個(gè)線程池,這些線程池之間的區(qū)別是什么,如果只用一個(gè)線程池可以么?

2. Retrofit

github地址

https://github.com/square/retrofit

介紹

十分簡(jiǎn)潔的網(wǎng)絡(luò)請(qǐng)求框架,底層由okhttp負(fù)責(zé)執(zhí)行網(wǎng)絡(luò)請(qǐng)求。

重點(diǎn)

  • 如何自定義注解

  • 如何將方法轉(zhuǎn)化成Request對(duì)象

  • ServiceMethod的作用

  • adapter,converter的設(shè)計(jì)思路,如果想要實(shí)現(xiàn)將okhttp也變成可替換的應(yīng)該如何設(shè)計(jì)代碼

  • InvocationHandler與泛型的使用

3. Volley

github地址

https://github.com/google/volley

介紹

Google出品的網(wǎng)絡(luò)請(qǐng)求框架

重點(diǎn)

  • Dispatcher和RequestQueue的設(shè)計(jì)實(shí)現(xiàn)

  • RetryPolicy 策略模式的實(shí)現(xiàn)

4. Glide

github 地址

https://github.com/bumptech/glide

介紹

Google出品的圖片加載框架

重點(diǎn)

  • 內(nèi)存管理和線程管理的方式,engine的作用

  • 如何利用生命周期來控制加載的暫停與恢復(fù)

  • 如何處理帶優(yōu)先級(jí)的請(qǐng)求

  • 各個(gè)模塊、類、方法等職責(zé)劃分以及命名習(xí)慣,代碼規(guī)范等

5.Tinker

github地址

https://github.com/Tencent/tinker

介紹

騰訊出品的熱更新框架

重點(diǎn)

  • 實(shí)現(xiàn)原理,如何實(shí)現(xiàn)的補(bǔ)丁dex替換

  • 如何實(shí)現(xiàn)plugin

  • 文件有效性校驗(yàn)的方式

  • dex合成

6. Android-Architecture

github地址

https://github.com/googlesamples/android-architecture/tree/master

介紹

Google出品的架構(gòu)介紹

重點(diǎn)

  • 各個(gè)架構(gòu)的實(shí)現(xiàn)方式以及特點(diǎn)

  • 如何在各個(gè)架構(gòu)下做單元測(cè)試

7. OkHttp

github地址

https://github.com/square/okhttp

介紹

應(yīng)該是Android開發(fā)使用最廣泛的網(wǎng)絡(luò)框架了

重點(diǎn)

  • 如何自建socket發(fā)送數(shù)據(jù)

  • 連接池怎么復(fù)用連接的

  • websocket的流程,心跳的處理,建立長(zhǎng)連接之后如何收發(fā)消息

  • 緩存控制

  • 責(zé)任鏈模式

8. ThreadPoolExecutor

github 地址

https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java

介紹

jdk中線程池實(shí)現(xiàn)的源碼。

重點(diǎn)

  • 如何實(shí)現(xiàn)一個(gè)生產(chǎn)者消費(fèi)者

  • 停止消費(fèi)者線程時(shí)awaitTermination的作用

  • 如何做到控制核心線程數(shù)的

  • BlockingQueue的使用方式,ReentrantLock的使用方式,Condition的作用以及使用方式

9. Design Pattern

github地址

https://github.com/iluwatar/java-design-patterns

介紹

包含了幾乎所有常見的設(shè)計(jì)模式以及代碼示例

重點(diǎn)

  • 各種設(shè)計(jì)模式的使用場(chǎng)景,為什么這么設(shè)計(jì)

  • 在Android Framework中哪些部分是和設(shè)計(jì)模式對(duì)應(yīng)的

10.AirMapView

github 地址

https://github.com/airbnb/AirMapView

介紹

AirBnb出品,地圖的抽象封裝層,內(nèi)置提供GoogleMap與網(wǎng)頁地圖,思路稍微些奇怪,地圖的實(shí)現(xiàn)層是通過Fragment來做的,而不是View。并且這種抽象封裝對(duì)于百度或者高德地圖不太適用了,需要針對(duì)性的進(jìn)行改造。

重點(diǎn)

  • 如何針對(duì)特定場(chǎng)景抽象定義與具體實(shí)現(xiàn)

11. Android-Job

github 地址

https://github.com/evernote/android-job

介紹

EverNote出品,對(duì)Android各個(gè)系統(tǒng)版本后臺(tái)任務(wù)的統(tǒng)一封裝,內(nèi)部實(shí)現(xiàn)了AlarmManager,JobScheduler,Gcm等。

重點(diǎn)

  • 上層封裝與底層實(shí)現(xiàn)的解耦方式

  • 對(duì)于不同系統(tǒng)版本,使用不同api的封裝方式

12.StackView

github 地址

https://android.googlesource.com/platform/frameworks/base.git/+/nougat-mr2.3-release/core/java/android/widget/StackView.java

介紹

Android系統(tǒng)代碼提供的一個(gè)非常復(fù)雜的卡片控件。代碼以及實(shí)現(xiàn)效果都很復(fù)雜,幾乎是常規(guī)業(yè)務(wù)條件下能夠接觸到的最復(fù)雜控件樣式了??ㄆ丶泻芏囝愃频膸?kù),這里只以官方庫(kù)為例。

重點(diǎn)

  • 如何實(shí)現(xiàn)的卡片切換效果* 代碼設(shè)計(jì)中對(duì)于方法抽象,繼承與復(fù)寫的考慮

  • 在復(fù)雜控件中對(duì)于Animator,canvas等的搭配使用

13. Dagger 2

github地址

https://github.com/google/dagger

介紹

Google發(fā)布的依賴注入框架。在Android端使用依賴注入的不二選擇。在很多情況下使用dagger能夠很好的解決模塊解耦問題。

重點(diǎn)

  • 依賴注入是什么

  • 幾種注解承擔(dān)什么樣的角色

  • apt的使用方式

  • 如何跟生命周期相結(jié)合的

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評(píng)論 25 708
  • 生命中感恩遇到慈悲大愛智慧的格西老師,讓我通過種子法則的學(xué)習(xí)放大格局,有意的做出慷慨的行為,去施善幫助能幫到的人。...
    張蓉萍閱讀 161評(píng)論 0 0
  • 他在車流擠壓人流的十字路口邊緣呆了很久,盤算著這個(gè)世界是否應(yīng)該毀滅,直到一聲鳴笛將他的思索拉回現(xiàn)實(shí):“你擋住我的路...
    語彥閱讀 179評(píng)論 0 0
  • TmemoryStream.ReadBuffer方法 聲明:procedure ReadBuffer(var Bu...
    笑而不語_ddbd閱讀 211評(píng)論 0 0
  • 以為,談戀愛這件事情,它并不是我們生活中的必須品,更多的時(shí)候,它是我們生活的調(diào)味劑,它的存在是為了讓這平凡而又枯燥...
    是周周喲閱讀 265評(píng)論 0 0

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