標籤:
原文連結:https://medium.com/@laanayabdrzak/android-development-some-of-the-best-practices-27722c685b6a#.x3b8wsvz9
向原創致敬
在開發了幾個項目之後我決定寫篇文章分享一下一路走來的經驗教訓。
在使用任何第三方庫之前都要三思,這件事非常嚴肅。
除非必須,不要使用資料庫。
你可以嘗試使用realm(第三方資料庫),這個真的不錯。
項目很快就會達到65k方法,真的很快。此時可以求助Multidex。
RxJava是AsyncTask的最佳替代,而且它遠不止於此。
Retrofit是最好用的網路程式庫。
不要自己寫Http用戶端,可以用Volley或OkHttp。
使用RetroLambda縮減代碼。
我能想到人生最cool的事,就是把RxJava、Retrofit和RetroLambda綁在一起。
EventBus挺好用,但我不會用太多,因為代碼會變得很糾結。
通過功能分包,而不是通過層。
不要在UI線程中執行邏輯代碼,不然可能會ANR。
使用Lint檢查Layout層級可以幫你發現沒用的View,興許可以去掉。
使用Gradle以及預設項目結構。
把密碼與敏感性資料放在gradle.properties裡。(譯者註:或許更好的方式是把這些資料放在local.properties裡,然後把這個檔案加進.gitignore)
使用styles來避免在Layout檔案中寫重複代碼。
不要讓ViewGroup層級太多。(會過度繪製)
監控電量,充電時可以進行更多的資料更新,低電量時停止資料的自動更新。
可以嘗試JobScheduler。
當系統缺少記憶體(而不是應用缺少記憶體)時,系統會調用onLowMemory()方法,所以OOM原則上無法避免。
使用Account Manager來提示登入所需的資訊(使用者名稱、郵箱、密碼等)。
給方法一個明確的命名,要能顧名思義。
啟動介面是應用帶給使用者的第一體驗。
如果不需要啟動介面,那不要無故添加。
保持colors.xml檔案短而簡單,唯寫基本顏色就行。
保持dimens.xml檔案簡單,之定義基本常量。
當要時常修改一個字串時,使用StringBuffer或StringBuilder(後者不保證安全執行緒)。
為了避免記憶體泄露:
不要在AsyncCallBack中保留View引用。
不要讓靜態對象持有View引用。
最好不要在集合架構中儲存View,但你也可以使用WeakHashMap。
FlatBuffers是一個高效的跨平台的序列化類別庫,建議使用。
Serializable實現起來很方便,但效能是真的差
Android 開發的25個建議