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表輸出的時候出現減速的原因可能是因為網路鏈結的屬性設定 在此...