網(wǎng)上看到的,感覺挺好,不喜勿噴

各大開源框架的研究,包括但不限于下面幾個
OKhttp、Retrofit、eventbus、Glide、eventbus、Rxjava、blockcanary、mvvp、dagger2等。
組件化是基本要會的,插件化大公司要求會實操的。
java 部分,包括 常見的數(shù)據(jù)結(jié)構(gòu)和算法,hashmap,二叉樹,紅黑樹,apt 注解,aop插樁,整套多線程知識點,包括ThreadLocal實現(xiàn)原理
flutter/Dart 大家要開始學(xué)了,就和當(dāng)年我們學(xué) kotlin 一樣,flutter 基本一錘定音了,google 下一代就是 flutter 的天下。
android 的系統(tǒng)原理,Lru算法,Binder機制,EventBus實現(xiàn)原理和為什么不能跨進程,跨進程幾種方式,AIDL,handler機制。
音視頻開發(fā),直播、點播、音視頻通話、音視頻會議,短視頻,這些不一定要多深入,但是基本的各大平臺的 SDK 要會集成,能根據(jù)開源的 嗶哩嗶哩IJKMediaPlayer 編寫自己的視頻,音頻播放模塊。
最后,就是Android的優(yōu)化了,Android的優(yōu)化無外乎以下幾個方面:內(nèi)存優(yōu)化(穩(wěn)定性)、交互優(yōu)化(流暢度)、耗電優(yōu)化(省電)、安裝包大小優(yōu)化、網(wǎng)絡(luò)優(yōu)化、應(yīng)用啟動優(yōu)化等幾個方面。
如果大家想要深入的話,可以重點關(guān)注下以下幾個方面的內(nèi)容:
圖形圖像開發(fā),不限于OpenGL ES,EGL,GLSurfaceView,濾鏡,美顏,canvas,paint
應(yīng)用層開發(fā)。主要還是原生開發(fā),提高性能優(yōu)化技能(啟動耗時、內(nèi)存、耗電、網(wǎng)絡(luò)、數(shù)據(jù)庫、穩(wěn)定性等),達(dá)到高級開發(fā)者的水準(zhǔn)
深入Android專業(yè)技能提升。主要是閱讀源碼,理解透Android開發(fā)常見的流程和原理(activity啟動流程、事件分發(fā)機制、廣播機制、Binder機制、內(nèi)存管理機制等)
向Android架構(gòu)師發(fā)展。從平時的一點一滴開發(fā)中,有意訓(xùn)練Android架構(gòu)設(shè)計能力,這需要站在一個更高的角度來統(tǒng)籌App開發(fā)。
跨平臺開發(fā)能力。如RN、Weex、Flutter等。大部分公司目前都需要有跨平臺開發(fā)能力,所以我們很有必要提高這方面的能力
SDK和框架開發(fā)??梢酝ㄟ^研究開源項目或者實際項目開發(fā),抽象提取有用SDK和框架供其他人使用
研究Android安全開發(fā)。App加固原理和實現(xiàn),熟悉常見加密方式(如:RSA、DES等)、Https、支付安全等。
Android自動化測試工具開發(fā)。這需要對ADB、Android截圖、Android布局解析、Android測試框架等相當(dāng)熟悉
音視頻開發(fā)。前兩年比較火的直播,還有這一兩年比較火的短視頻,都是與音視頻相關(guān)。所以,我們可以了解音視頻的編解碼以及傳輸協(xié)議等。
手游開發(fā)。游戲給鵝廠帶來了穩(wěn)定的收入,所以這也是不錯的方向。這就需要熟悉常見的游戲開發(fā)框架cocos2d-x、Unity3D
圖像開發(fā)。比如美圖秀秀、天天P圖,都用到圖形的合成、濾鏡等技術(shù),對圖像處理有很高要求。
Android Framework 開發(fā)
除此之外,要成長為一個架構(gòu)師,還需要開發(fā)者具備系統(tǒng)設(shè)計能力。具體來說,為如果你僅僅是對各種各樣的技術(shù)都熟悉,有技術(shù)廣度,也有一定的技術(shù)深度,實際上是不夠的。如果你的系統(tǒng)設(shè)計能力不到位,可能導(dǎo)致你在開發(fā)系統(tǒng)的時候會亂用技術(shù)。
比如說,有的系統(tǒng)他有一些自己特殊的業(yè)務(wù)場景和技術(shù)挑戰(zhàn),實際上在這個場景之下比較合適的是采用 “緩存 + 數(shù)據(jù)庫” 的技術(shù)方案來應(yīng)對。但是呢,有的工程師會很多技術(shù),但是缺少這種準(zhǔn)確的分析系統(tǒng)問題,提出合理的技術(shù)方案的能力,也就是缺少系統(tǒng)設(shè)計能力,導(dǎo)致他可能會引入Elasticsearch這種技術(shù)來嘗試解決這個問題,那么結(jié)果必然是失敗的。
規(guī)范代碼
不管如何,你的代碼得先能讓人看。這是我在剛剛?cè)胄袝r,一個老司機指導(dǎo)我的,隨著我在學(xué)習(xí)的深入,了解的更多,我們在基本功上的追求不就是為了代碼更加好看嗎,好看的代碼才更好懂,才能好改,設(shè)計模式,代碼架構(gòu),框架設(shè)計,MVP(多端分離) 不都是追求的這個最終結(jié)果嘛。
因此,我們可以從以下幾個方面著手:
實現(xiàn)功能前先設(shè)計好代碼,好的框架層次,讓我們可以快速的了解整個框架實現(xiàn),快速的找到想要的代碼,優(yōu)秀準(zhǔn)確的名字我們可以知道類是干什么的,
注釋寫的盡量詳細(xì)
不要寫太長的方法
不要寫太“?!钡拇a了,有的程序員喜歡寫非常有個性的代碼,喜歡寫一些別人很難看懂的代碼,他認(rèn)為這樣才能顯示出自己的“高水平”,這樣就不是高水平了,只能說代碼的可讀性太差了。
最后,互聯(lián)網(wǎng)不存在所謂的寒冬,只是你沒有努力罷了?。?!
最后的最后
不知不覺自己已經(jīng)做了幾年開發(fā)了,由記得剛出來工作的時候感覺自己能牛逼,現(xiàn)在回想起來感覺好無知。懂的越多的時候你才會發(fā)現(xiàn)懂的越少。
對于程序員來說,要學(xué)習(xí)的知識內(nèi)容、技術(shù)有太多太多,要想不被環(huán)境淘汰就只有不斷提升自己,從來都是我們?nèi)ミm應(yīng)環(huán)境,而不是環(huán)境來適應(yīng)我們!