一. UI及交互
Android開發(fā)者最表面的本職工作的是視覺及交互實(shí)現(xiàn).著重提高以下幾種技巧:
1. 自定義View.
通常限于xml配置的束縛,需要通過自定義View實(shí)現(xiàn)視覺的靈活性和通用性.
2. 熟悉Touch事件的分發(fā)流程
交互有一部分是與手勢(shì)相關(guān)的,比如頁面下拉會(huì)觸發(fā)刷新或關(guān)閉或隱藏bar等操作,只要掌握Touch分發(fā)流程,結(jié)合官方提供的ViewDragHelper等工具就更能得心應(yīng)手.
3. 參考第三方實(shí)現(xiàn)
Github上很多通用組件TabLayout,MaterailDialog等都有功能和設(shè)計(jì)比較好的第三方實(shí)現(xiàn),可參考進(jìn)行二次加工.
二. 基礎(chǔ)框架
任何框架都是加在原生代碼上的一層封裝,為了讓代碼可擴(kuò)展,易維護(hù),框架侵入到了APP的各種技術(shù)棧.注重以下幾方面:
1. 跟從google android團(tuán)隊(duì)的指導(dǎo)
google官方大力推薦的architecture架構(gòu),kotlin語言,ConstraintLayout布局等等,一定會(huì)成為主流.所以開發(fā)者盡量去學(xué)習(xí)并理解
2. 跟緊主流框架
團(tuán)隊(duì)進(jìn)行技術(shù)選型的時(shí)候大部分會(huì)參考幾個(gè)成熟的框架.
模型: mvp的干凈架構(gòu)或google官方推薦的mvvm
依賴注入框架: 選擇Dagger&Dagger Android
網(wǎng)絡(luò): 選擇Retrofit+OkHttp3
事件響應(yīng)驅(qū)動(dòng)方案: 選擇響應(yīng)式編程RxJava&Rxandroid
本地持久化: 選擇google官方的Room,或者jakewharton大神的disklrucache
日志打點(diǎn): 選擇timber
3. 探索黑科技
a. Hybrid混合開發(fā)
Native混合H5開發(fā)是常見的APP策略.
簡單點(diǎn)可以只使用JsBridge進(jìn)行通信.
為了符合"一次開發(fā),全平臺(tái)可用",可選擇facebook的react native,阿里的weex,google新出的flutter等等.
b. 熱修復(fù)
動(dòng)態(tài)的代碼發(fā)布及修復(fù)方案確實(shí)是挺吸引的點(diǎn).可參考此文章Android熱修復(fù)主流框架調(diào)研
c. 插件化
復(fù)雜項(xiàng)目需要考慮以模塊的形式動(dòng)態(tài)加載所需的功能.可參考此文章Android插件化RePlugin探索
很多方案都在嘗試賦予傳統(tǒng)app一些額外的功能.
三. 內(nèi)功
內(nèi)行看門道,不想被鄙視就好好夯實(shí)基礎(chǔ)吧.
1. Java/Kotlin基礎(chǔ)
Jvm, java的特性(泛型/注解等), 數(shù)據(jù)結(jié)構(gòu)等,看看深入理解Java虛擬機(jī) 系列文章沒錯(cuò)的.
2. 設(shè)計(jì)模式
看看JAVA設(shè)計(jì)模式-HeadFirst講解沒錯(cuò)的
3. android源碼
看看Binder,WindowManager等實(shí)現(xiàn),遇到兼容性或底層問題時(shí)就不會(huì)沒有思路了.
四. 程序員思維
程序員生涯里,總會(huì)慢慢意識(shí)到程序員這個(gè)工種本身就有一些特性:
1. 打好基本功
作為一個(gè)快轉(zhuǎn)到后臺(tái)的程序員,不管是哪一個(gè)技術(shù)路線,都需要夯實(shí)基本功,基本功會(huì)體現(xiàn)在日常80%的工作上.
2. 優(yōu)化代碼
總要擠出時(shí)間做優(yōu)化.代碼的優(yōu)化是永無止境的.推動(dòng)技術(shù)進(jìn)步有兩點(diǎn):
a. 業(yè)務(wù): 業(yè)務(wù)的復(fù)雜度會(huì)趨勢(shì)程序員去設(shè)計(jì)高可用,易維護(hù)的代碼.
b. 進(jìn)取心: 所有繁瑣,不可用的代碼都可以依靠新技術(shù)新架構(gòu)(使用注解,中間層,設(shè)計(jì)模式等)去抽象和優(yōu)化.高要求會(huì)促使你閱讀英文,積累技術(shù)博客等的.
3. 端正程序員的思維
保持好奇心,對(duì)循規(guī)蹈矩的流程保持質(zhì)疑.
相信技術(shù)能力,相信自己能夠通過探索解決問題.
代碼不是看重寫的多復(fù)雜,而是寫的多簡潔優(yōu)雅.
在做任何需求時(shí),想好思路后,需要仔細(xì)設(shè)計(jì)領(lǐng)域模型,模塊功能/職責(zé).
在每個(gè)小節(jié)點(diǎn),對(duì)書籍或項(xiàng)目進(jìn)行整理,提取思路和設(shè)計(jì)模式,然后應(yīng)用到項(xiàng)目中,養(yǎng)成這樣的正向循環(huán).
與牛人在一起,擁抱討論和分享.
沉浸到英語的環(huán)境里.