【Android】ViewPager頻繁切換圖片頁卡卡頓躏哩,提示Skipped 56 frames! The application may be doing too much work on ...

ViewPager圖片切換卡頓

閑暇時想到實現(xiàn)一個無限輪播Banner效果署浩,這里是通過ViewPager直接懟出來的,在簡單修改滑動邏輯之后達(dá)到想要的效果扫尺,在測試下Demo的穩(wěn)定性時筋栋,我使用了一個非正常手段——在極短的時間內(nèi)快速循環(huán)切換頁面,由于短時間內(nèi)切換較快且過于頻繁正驻,出現(xiàn)了界面切換卡頓的現(xiàn)象弊攘,具體效果如下:

before.gif

查看系統(tǒng)日志發(fā)現(xiàn)提示出了如下信息:

Skipped 56 frames!  The application may be doing too much work on its main thread.
// 跳過56幀!應(yīng)用程序可能在其主線程上做了太多的工作姑曙。

這里已經(jīng)很簡單也很直白的提示我們了襟交,我們在應(yīng)用主線程中做了太多的工作,導(dǎo)致了嚴(yán)重的跳幀伤靠,但是這些操作又不至于使程序達(dá)到ANR的地步捣域,所以才會由此提示。

理想狀態(tài)每秒展示60幀時人眼感受不到卡頓宴合,1000ms/60幀焕梅,即每幀繪制時間不應(yīng)超過16.67ms。如果大幅度超過這個值就會出現(xiàn)卡頓現(xiàn)象卦洽,系統(tǒng)也會發(fā)出提示贞言。


解決方法

這里要根據(jù)各位自身的設(shè)計情況有目的的去優(yōu)化,通過以下幾點(diǎn)基本上可以解決問題:

  1. 盡量減少Layout的布局層級
  2. item視圖復(fù)用阀蒂,避免不必要的新建
  3. 圖片壓縮该窗、緩存
  4. 關(guān)閉硬件加速
    在Application加入代碼關(guān)閉硬件加速即可
    android:hardwareAccelerated="false"
    或者在View類中加入如下代碼:
    setLayerType(View.LAYER_TYPE_SOFTWARE, null);// 關(guān)閉硬件加速

Note: 你可以關(guān)閉View級別的硬件加速打肝,但是你不能在View級別開啟硬件加速,因為它還依賴其他的設(shè)置挪捕。

  1. 設(shè)置緩存頁
    使用setOffscreenPageLimit(int limit)設(shè)置足夠的緩存頁粗梭。

在對圖片進(jìn)行壓縮處理后,通過實踐發(fā)現(xiàn)使用關(guān)閉硬件加速設(shè)置緩存頁這兩種方法都可以有效解決切換卡頓問題(各位小哥在針對自己項目模塊進(jìn)行優(yōu)化時要有點(diǎn)耐心哦)级零。

after.gif
注:從正常使用情況來說断医,Demo本身并沒太大問題,畢竟在正常的使用場景很少有人這么操作(本人親測RollPagerView也存在同樣的問題)奏纪,不過多學(xué)習(xí)學(xué)習(xí)總是好的鉴嗤。

【拓展閱讀】

Android流暢度之幀率
Android性能優(yōu)化第(十 一)篇---卡頓分析,正確評測流暢度
Android硬件加速原理與實現(xiàn)簡介
Android的硬件加速


如果您有更好的解決方案歡迎評論分享序调,如有錯誤醉锅,請批評指正,謝謝发绢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硬耍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子边酒,更是在濱河造成了極大的恐慌经柴,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墩朦,死亡現(xiàn)場離奇詭異坯认,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)氓涣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門牛哺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劳吠,你說我怎么就攤上這事引润。” “怎么了赴背?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵椰拒,是天一觀的道長。 經(jīng)常有香客問我凰荚,道長燃观,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任便瑟,我火速辦了婚禮缆毁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘到涂。我一直安慰自己脊框,他們只是感情好颁督,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著浇雹,像睡著了一般沉御。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昭灵,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天吠裆,我揣著相機(jī)與錄音,去河邊找鬼烂完。 笑死试疙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抠蚣。 我是一名探鬼主播祝旷,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘶窄!你這毒婦竟也來了怀跛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤护侮,失蹤者是張志新(化名)和其女友劉穎敌完,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體羊初,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年什湘,在試婚紗的時候發(fā)現(xiàn)自己被綠了长赞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡闽撤,死狀恐怖得哆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哟旗,我是刑警寧澤贩据,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站闸餐,受9級特大地震影響饱亮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舍沙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一近上、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拂铡,春花似錦壹无、人聲如沸葱绒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽地淀。三九已至,卻和暖如春岖是,著一層夾襖步出監(jiān)牢的瞬間骚秦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工璧微, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留作箍,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓前硫,卻偏偏與公主長得像胞得,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屹电,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容