what is recyclerview ?
aflexibleview for providing alimitedwindow into alargedata set
recyclerview:
layout manager
item animator
adapter
what is viewholder ?
public static class myholder extends recyclerview.viewholder
我們可以看到viewholder就是管理儲存乙個itemview中所有view的乙個管理者。
recyclerview的快取
scrap:一級快取,其中放置著當前螢幕還在顯示的itemview的holder,因為android螢幕每16ms重新整理一次,會導致所有資料重新整理,就直接復用scrap中的資訊避免重新建立view以及bind view。通過position來達到復用的目的。
cache:二級快取,其中存放著剛剛畫出螢幕的itemview的holder,該快取預設快取大小為2,目的是當使用者方向滑動的時候可以直接復用。
viewcacheextension:**快取,留給使用者自定義使用的快取池
recycledviewpool:四級快取,乙個新的itemview,如果在前三個快取都不符合條件就從這裡根據itemviewtype來選擇復用holder,不夠這裡邊的holder是含有髒資料的,不需要呼叫oncreateview(),但是會重新繫結資料呼叫onbindview()。
點選事件的快取,如果點選事件是放在onbindview()中進行設定的每次繫結資料的時候都要listener物件的建立與設定,這是沒有必要的,而且在使用者快速滑動的時候,資源的消耗就會特別明顯。我們可以在oncreateview()中設定點選事件或者將點選事件放置在viewholder中,在快取viewholder的時候同時將監聽物件快取起來。
RecyclerView 快取機制詳解
recyclerview據官方的介紹,該控制項用於在有限的視窗中展示大量資料集,其實這樣功能的控制項我們並不陌生,例如 listview gridview。recyclerview可以用來代替傳統的listview,gridview,更加強大和靈活。recyclerview的使用網上有非常多案例,這...
django memcached快取機制 初稿
原理 django會根據設定的快取方式,瀏覽器第一次請求時,cache會快取單個變數或整個網頁等內容存放到硬碟或者記憶體中,同時設定response頭部,當瀏覽器再次發起請求時,附帶f modified since請求時間到django,django 發現f modified since會先去匹配引...
前端http協議快取初解
toc 使用者獲取網路資源,需要通過非常長的網路去伺服器上請求資源,另外服務端為了應對大量的使用者請求而不斷的提公升硬體效能與頻寬。這對使用者與服務端都非常的不友好。而快取就是為了解決使用者請求速度與釋放伺服器壓力而生的。為什麼我會寫http快取,因為下面介紹的快取都是通過http定義的。瀏覽器快取...