做任何事都有兩種人,一種是自己很努力去做的,還一種是聽從他人意見建議做的。這裡有我一些總結的經驗,希望能幫到你們:
- 匯入任何第三方包的時候都要再三思考,因為這個動作__責任__重大。
- 不要去繪製使用者看不見的地方。
- __再三考慮__資料庫的使用對業務是不是必要的。
65535
問題很快就會遇到,這裡可以助你渡劫。- 替代非同步任務最好的東西是
RxJava
,沒有之一。 - Retrofit是目前最好的網路請求框架。
- 可以使用Retrolambda來簡化你的程式碼。
- RxJava+Retrofit+Retrolambda組合起來使用簡直不能更爽。
- EventBus是個很好的訊息匯流排庫,我也用它,但是我__不會過於依賴__,因為大量使用這貨會導致你的程式碼__艱澀難懂,邏輯凌亂不堪__,請__慎用__這貨,包括
RxBus
。 - 分包按功能特點分,不要按業務層分。
- 主執行緒不要做耗時操作。
- 使用lint可以幫助你優化佈局和佈局層次,減少一些無必要的佈局or控制元件。
- 如果你使用
Gradle
,那麼儘可能去加速編譯。 - 開啟編譯報告,看看編譯過程中的耗時統計。
- 在架構上儘量採用大眾化的。
- 測試是雖然費事費時,但是相比不要測試而言,你解決Bug的時候會更快,程式碼也更具健壯性。
- 使用依賴注入能讓你的app更模組化更好測試。
- 訂閱這個網站的內容對你大有裨益。
- 堅決不要使用個人郵箱作為應用商店平臺的賬戶,當然也包括一些第三方服務提供商。
- 在使用
EditText
時,使用合適的輸入型別。 - 使用
Android Studio -> Analyze
去分析和定位bug。 - 經常關注一些比較新的技術和庫。例如dryrun這個庫可以幫你減少構建遠端倉庫專案的時間。PS:我自己就在用,簡直不能更爽。
Service
只做它應該做的,並且在需要它銷燬的時候儘快能銷燬。- 使用AccountManager針對使用者名稱和郵箱啥的提供建議。
- 使用
CI (Continuous Integration)
來構建和描述自己的beta版以及正式版apk。 - 不要執行自己的
CI
伺服器,維護伺服器很耗時,因為將有磁碟空間/安全問題/更新伺服器以防止SSL攻擊
等等各種柴犬二哈問題在等著你。使用circleci
,travis
或shippable
,它們便宜並且讓你少操心。 - 釋出app的時候可以使用自動部署。
- 你需要匯入某個庫,但是這個庫特別大,而你只需要其中一小部分功能,那麼你應該去找個更小的,更符合自己的庫(proguard可以壓縮資源)。
- 不要依賴匯入過多的
modules
除非你真的需要。因為過多的modules
會導致構建變慢(CI就是個例子),這比起直接使用二進位制的.jar/.aar
來說要慢4倍左右。 - 可以考慮將
.PNG
替換成.SVG
了。 - library中抽象類能比較便捷的控制和替換使用場景(例如:
AppLogger.d(“message”)
中包括了Log.d(TAG, message)
並且還能優化成Timber.d(message)
)。 - 監控網路連線和連線的型別你會發現->
wifi
連線下可能重新整理資料更頻繁。 - 監控電量和電池你會發現->充電時候資料可能更新更頻繁,低電量的時候資料更新很慢。
- 使用者互動介面就是個笑話,除非你能講解出來,否則它絕對不夠好。
- 測試非常適合於效能上的調優:慢慢地(但正確)寫一些實現,然後驗證優化並且也不會破壞測試。