接上,優化滾動的效率

2021-07-29 13:15:02 字數 963 閱讀 7760

提高滑動的效率,需要避免ui執行緒重繪,主要有兩個方法:

listview滑動停止後才載入可見項

listview滑動時,取消所有載入項

即,需要增加乙個介面:

public class myadapter extends baseadapter implements abslistview.onscrolllistener

該介面有兩個預設方法:

private int mstart, mend;

public void onscrollstatechanged(abslistview view, int scrollstate)else

} public void onscroll(abslistview view, int firstvisibleitem, int visibleitemcount, int total)

}

修改後的初始化方法為:

public myadapter(context context, listdata, listview listview)

}}

另外還有一些方法中的引數需要修改,不過都只是適配一下引數而已,具體小細節就不予記錄了。主要完成的就是將顯示交給滑動狀態監聽來觸發,以實現平滑的滾動,將載入的控制權由getview轉移到滑動事件,從而使複雜的listview也可以實現流暢的非同步載入

這樣的編寫程式有很大的弊端,耦合度太高,需要優化某一點小細節,就需要全篇修改,而這不符合物件導向程式設計的優勢,以後如果有機會我嘗試一下能否改進。

非同步載入的小總結:

通過非同步載入,避免了阻塞ui執行緒

通過判斷listview滑動狀態,決定何時載入

不僅是listview,任何控制項都可以非同步載入,且非同步載入不僅僅是載入網路,所有的耗時操作都可以是非同步載入,防止阻塞ui執行緒,提高使用者體驗。

優化UITableView cell的滾動速度

1.利用好instruments。先檢測leaks,再去觀察優化效果。2.重中之重在於tableview cell的初始化,建議在tableview delegate中只實現配置方法,渲染全扔到drawinrect中做。3.中心思想,instruments core animation的上下兩欄 c...

優化遞迴的效率

函式遞迴呼叫是很常見的做法,但是它往往是低效的,本文 優化遞迴效率的思路。1.尾遞迴轉換成迭代 尾遞迴是一種簡單的遞迴,它可以用迭代來代替 比如 求階乘函式的遞迴表達 f int n 可以轉換成完全等價的迴圈迭代 f int n 尾遞迴是最簡單的情形,好的編譯器甚至可以自動的識別尾遞迴並把它轉換成迴...

索引效率優化

索引是提高資料查詢最有效的方法,也是最難全面掌握的技術,因為正確的索引可能使效率提高10000倍,而無效的索引可能是浪費了資料庫空間,甚至大大降低查詢效能。索引的管理成本 1 儲存索引的磁碟空間 2 執行資料修改操作 insert update delete 產生的索引維護 3 在資料處理時回需額外...