1. 程式人生 > >淺談RecyclerView效能問題 滑動卡頓 介面閃動

淺談RecyclerView效能問題 滑動卡頓 介面閃動

在RecyclerView控制元件出來之後大多數android developer開始使用這個控制元件,但是有些時候我們經常會發現這個控制元件並不像我們想的那個樣子,比如果效能吊炸天啊,滑動如絲滑般順暢啊等等,這個時候我們應該分析是什麼原因導致的這種情況,從而避免這類事情發生,一下是本人在開發中遇到的一些問題,踩到的一些坑,現在分享給大家,前車之鑑後事之師,希望能幫助一些遇到此問題的人。

第一:滑動時候佈局閃動

這個是令人抓狂的事情,用list的無非為了流暢,item複用,節省記憶體,但是當用完之後出現滑動閃動,心累。於是找問題,首先想到以前一個需求,列表中有一個view載入h5。webview作為item置於RecyclerView中時候滑動時webview內部的圖片閃的厲害(大量圖片,抓包看了下有的一張圖片幾十兆),後來百度得到的答案是在manifest檔案中,對應的activity加入<android:hardwareAccelerated="true" >

啟用硬體加速,後來試了下shit,這是什麼鬼啊,Webview雖然不閃了,但是這也太卡了吧,滑動時候感覺要爆炸。後來跟後臺協商,限制圖片個數,硬體加速去掉,正常載入。因此,個人感覺硬體加速這玩意慎用,一般的app大多數地方根本用不到在acticity上面強制開啟。

第二:滑動時候介面卡頓

這個更噁心,本來原有介面用h5載入,就是應為體驗不好,所以換成原生, 然而做出來後突然發現還沒有h5的效果好,這可是讓人蛋疼的事情。因此又苦逼的分析問題。佈局沒什麼問題,後來發現問題出現在分割線上面。設計圖上面item之間有分割線,但是RecyclerView並沒有像listview那樣設定分割線的功能。因此參考鴻陽大神的新增分割線的方法(

http://blog.csdn.net/lmj623565791/article/details/45059587),但是遇到問題就是多佈局的情況下,會發生卡頓,單一佈局時候沒有這種問題。解決方案:不使用自定義的方法新增分割線,而是把分割線新增到item裡面,完美,流暢執行。同時也建議Google對RecyclerView進行優化,增加分割線方法。

有問題去解決,總歸RecyclerView依然是非常棒的控制元件,值得去學習,使用。比如區域性重新整理,插入,載入,刪除等,當然還有自帶動畫,總之來說6的一批。
遇到問題得善於去分析照成問題的原因,然後找到病根方能治癒。

//大家有什麼問題可以留言,一起學習交流。