前言
-
如果你也學習Android,那么你大概率會看過我的文章。經常有讀者給我留言:“該怎么學習Android?”、“日常學習Android的方法是什么”。
-
所以,今天,我將獻上一份《Android知識圖譜》,以自身的經驗 & 所見所聞,旨在告訴大家,學習Android,實際上需要學習什么內容,希望你們會喜歡。
Android相關
Android部分我就不分幾大塊了。直接列舉,但是列舉到的每一項都是面試經常會問到并且會延伸問的,所以需要深入的去研究。
- 四大組件有哪些,說出你對他們在Android系統中的作用和理解。
- Activity生命周期,A啟動B兩個頁面生命周期怎么運行的,為什么會這樣,生命周期為什么這么設計,你有了解過嗎。
- 四種啟動模式,內部堆棧是怎么回事,你工作中怎么使用的。
- Activity的啟動過程,這個我強烈建議每個Android開發人員都要清楚的知道,并且跟一下源碼,幾個核心類的作用。你會對Android有一個更好的認識。
- 事件分發流程,怎么處理滑動沖突。舉例:長按ListView的一個Item它變灰了。這個時候在滑動。item恢復原來的樣子,這個時候他們內部的事件傳遞是什么樣子。有很多種問法,所以你一定要搞清楚。
- 自定義View,View的繪制流程。onMeasure,onLayout,onDraw都是什么作用。ViewGroup是怎么分發繪制的。onDraw里面怎么去做繪制,Canvas,Path,Paint你都需要了解。并且配合ValueAnimtor或者Scroller去實現動畫。有時候面試的會突發奇想問你ViewGroup是樹形結構,我想知道樹的深度,你怎么計算,突然就變成了一個數據結構和算法的題。
- Bitmap和Drawable
- Animation和Animator
- LinearLayout、RelativeLayout、FrameLayout三種常用布局的特性,他在布局的時候是怎么計算的。效率如何。CoordinatorLayout配合AppbarLayout的使用,以及自定義Behavior。ConstraintLayout的使用。用來減少層級。
- Handler消息機制,推薦看一下Looper的源碼
- 進程間通信,Binder機制
- AsyncTask源碼看一下。
- 圖片的壓縮處理,三級緩存,Lru算法
- 分辨率和屏幕密度,以及計算一個圖片大小。mdpi,hdpi的關系和比例。
- 優化,內存優化,布局優化,啟動優化,性能優化。內存泄露,內存溢出。怎么優化,用了什么工具,具體怎么做的。
- listView和RecycleView對比,以及緩存策略。
- JNI(很少問)
- MVC,MVP,MVVM
- 開源框架Okhttp,Glide,EventBus,Rxjava等,以及JetPack下的開源庫,要會用,還說說出一些東西,推薦 Retrofit,Okhttp,Glide,EventBus這些看一下源碼。
- RecyclerView四大塊,能實現什么效果,大致怎么實現的,心里要有數
- DecorView,Window,WindowManager,PhoneWindow關系,以及個子的職責。
加分項:Kotlin,Gradle,Flutter,組件化,插件化,熱修復。
Android相關總結
上面的列的相關內容,看似很短一句話,但是每一項都需要你深入的去研究,要了解原理,最好去看一下源碼實現。當然還有一些是我沒寫到的,可能是我寫的時候沒有想起來,并不代表他們不重要,你也需要重視,再來一波推薦:《Android開發藝術探索》強烈推薦,建議細細的讀,如果粗心大意建議讀兩到三遍,針對性的讀。《Android進階之光》《高級Android開發強化實戰》《Android組件化架構》《Android熱修復技術原理》《Android插件化開發指南》