在以前咱們講了不少可以優化 Android 開發項目質量的方案,這些方案更多的是從一些比較專精的方向切入的,闡述的是一些比較重要且獨立的優化方案。html
本文咱們將總結一下在平常開發過程當中咱們可以使用的一些優化項目的技巧和方案。android
RecycleView在開發時能夠考慮如下優化的方案:git
a. 數據的處理邏輯儘量放在異步處理,onBindViewHolder方法只作數據填充視圖的操做。github
b. 對ItemView設置監聽器,不要對每個Item都調用addxxListener,能夠考慮公用一個xxListener,根據ID的不一樣來操做,優化了對象的頻繁建立帶來的資源消耗。web
a. 分頁拉去遠端數據,並對拉去下來的數據進行緩存,儘量提高二次加載速度。 緩存
b. 對於新增的或者刪除數據經過 DiffUtil 進行局部數據的刷新,儘可能不進行全局數據刷新。網絡
c. 對於使用庫版本在25.1.0及以上的時候使用Prefetch功能。架構
a. DiffUtil 推薦博客和項目地址:https://github.com/mcxtzhang/SupportDemos、【Android】RecyclerView的好伴侶:詳解DiffUtil異步
b. Prefetch 推薦博客地址:RecyclerView Prefetch功能探究。svg
a. 減小布局層級,簡化ItemView。
b. 若是Item高度是固定的話,可使用RecycleView.setHasFixedSize(true)來避免requestLayout浪費資源。
c. 若是多個RecycleView的Adapter是同樣的,好比嵌套的RecycleView中存在同樣的Adapter,能夠經過設置RecycleView.setRecycleViewPool(pool),來共用一個RecycleViewPool。
a. 能夠將一些資源文件放在assest目錄,而後重寫WebViewClient的shouldInterreptRequest方法,進行訪問地址攔截,當url地址命中本地配置的url時,使用本地資源替代,不然就使用網絡上的資源。
b. WebView 初始化慢,能夠在適當的時機初始化好一個WebView待用,若是時機合適也能夠在初始化好以後請求數據。
a. 建議直接在代碼中建立WebView,即便用new WebView(),並傳入Application Context 代替在 XML 裏面聲明防止 Activity 引用被濫用,能解決90%以上的WebView內存泄漏。使用示例以下:
webview = new WebView(getContext().getApplication()); container.addView(webview);
b. 及時銷燬WebView。 示例代碼以下:
if(webview != null) { webview.setWebViewClient(null); webview.setWebChromeClient(null); webview.loadDataWithBaseURL(null, "」, "text/html", "utf-8", null); ((ViewGroup) webview.getParent()).removeView(webview); webview.destroy(); webview = null; }
a. 使用 Lint 工具掃描工程資源,手動移除無用資源。
b. 在Gradle參數中配置 shrinkResource=true。
c. 優先考慮使用Shape代碼、.9圖、svg矢量圖、VectorDrawable 類來替換傳統的圖片。
a. 啓用混淆以移除無用代碼。
b. 檢查代碼邏輯,提升複用率。
能夠考慮只提供主流架構的支持,好比arm,對於mips和x86架構能夠考慮不提供支持
android { defaultConfig { ... ndk { abiFilters "armeabi-v7a" } } }