Android RecycleView載入速度優化

2021-07-28 18:02:14 字數 1650 閱讀 4635

android開發中,經常會碰到列表載入優化的問題。之前是listview,現在經常用到recycleview;不管怎麼換控制項,優化的思路始終是一樣的,那就是將當前的資源盡量都放在使用者需要的地方,僅載入使用者需要看到的,使用者不會看到的我們不需要載入。

思路有好幾個,第一種是實現乙個和recycleview載入頁面演算法一樣的佇列儲存結構,這種實現起來的**難度相對較大。

第二種就是根據不同的狀態去載入,這種實現起來的難度相對較小。我選擇第二種進行說明。

我的優化步驟如下,先以最小資源去載入資料;然後逐步去優化;

第一步,先僅僅在介面滑動靜止時,去通知介面重新整理,滿足最基本的頁面載入需求;

核心**如下:

adapter顯示**:

@override

public

void

onbindviewholder(recyclerview.viewholder holder, int position)

}}

資料管理類載入**

@override

public bitmap getbitmap(int position)

return bitmap;

}

獲取

private

void

loadbitmap(int position)

}

//模擬載入

bitmaphandler = new handler(bitmapthread.getlooper())

taskset.add(position);

string path = (string) msg.obj;

if (bitmapcache != null) catch (exception e)

}if (bitmap != null)

}super.handlemessage(msg);

}};

//當滑動靜止時,主動去通知介面重新整理

@override

public

void

onscrollstatechanged(int newstate)

}}

完成以上的**。就可以滿足僅僅載入使用者需要看到的;也就是僅僅在頁面靜止時去載入資料;taskset和bitmapcache可以保證不會重複去載入;

可是上面的有個問題,就是當你慢慢滑動時,新頁面也是靜止時才開始載入,這樣速度就顯得有些慢了;

因此我對這個靜止載入的思路進行了乙個優化,將靜止的條件擴大為當慢慢滑動時,也就是滑動速度在乙個範圍內時,就可以去載入;因此我優化了一下,慢速滑動的情況,**如下:

//即將要進入的介面

@override

public

void

onviewattachedtowindow(int position)

//處理慢速滑動時的 

@override

public void onscrolled(int dx, int dy)

}

這樣下來,我們就可以達到最大化的優化列表載入資料的速度了。

優化頁面載入速度

1.js css html做gzip壓縮 不要對進行gzip壓縮 2.刪除js css html 檔案的注釋,回車符,以及無效位元組 4.css放到header中,避免白屏 5.合併js和css 壓縮js和css 6.優化快取 對沒有變化的css js,等網頁元素,直接利用客戶端的瀏覽器快取讀取來有...

提高網頁載入速度

1.頁面資料呼叫 資料庫查詢 方面原因,程式儘量減少訪問資料庫次數.2.頁面引用過多,會影響頁面載入速度。3.js呼叫,影響頁面載入速度。4.檔案大小沒有控制好,頁面載入 flash過多而又沒有控制其大小。具體可採用js來改變載入項的順序,在保證頁面能夠正常瀏覽之後再載入廣告 次要等資訊。5.伺服器...

kettel調優 提高讀寫速度

由於kettle提高表輸出寫入速度太低,每秒速度三四十,實在忍受不了,參考一些資料之後進行了以下改變,我只進行了第一項的速度每秒五六千,加上其他的測試速度有達到3萬多,有一分鐘二十多萬的記錄,沒測試極限,下為更改的地方 no.1 mysql表輸出的時候出現減速的原因可能是因為網路鏈結的屬性設定 在此...