日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android Fresco圖片加載優化的方案

瀏覽:29日期:2022-09-20 15:06:22
優化背景

一般情況下,Fresco圖片加載需使用SimpleDraweeView,這個控件并不能自動根據自身的尺寸按需加載圖片,即一個 N×N 的UI控件,背后加載的實際圖片可能是 2N×2N。這就導致了實際應用運行過程中的內存使用效率不高,需要針對其進行內存優化。

Android Fresco圖片加載優化的方案

在一些入門級硬件設備上,表現得尤為明顯,隨著程序的運行時間的增長,OOM的風險也不斷加大。

Fresco版本:1.13.0

數據記錄

聲明控件大小為 480×270

<com.facebook.drawee.view.SimpleDraweeView android: android:layout_width='480dp' android:layout_height='270dp' android:layout_alignParentBottom='true' android:layout_centerHorizontal='true' app:layout_constraintBottom_toBottomOf='parent' app:layout_constraintLeft_toLeftOf='parent' app:layout_constraintRight_toRightOf='parent' app:layout_constraintTop_toTopOf='parent' />

加載圖片代碼,調用Fresco的setImageURI

val mImageUrl = 'https://static.runoob.com/images/demo/demo4.jpg'val simple_drawee_view = findViewById<SimpleDraweeView>(R.id.simple_drawee_view)simple_drawee_view.setImageURI(mImageUrl)

運行后dump內存如下,可以發現內存中的圖片尺寸為1920×1080,即此時SimpleDraweeView會按照網絡上的原圖尺寸進行加載,內存占用大小為 8294475Bytes = 7.91Mb。一張圖片占用近8Mb,在圖片顯示十分豐富的頁面場景中,圖片總內存占用大小將特別美麗,萬一這個頁面又內存泄漏了,那就更美麗了。

Android Fresco圖片加載優化的方案

如果只加載 480×270 大小的圖片,內存占用為 518475Bytes = 0.49Mb。相較于原來 1920×1080 尺寸,內存減小了 94%!

Android Fresco圖片加載優化的方案

優化方案

Fresco提供了resize api,使得調用者在圖片解碼前可以修改內存中圖片的大小,api大致如下

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri) .setResizeOptions(new ResizeOptions(width, height)) .build();PipelineDraweeController controller = Fresco.newDraweeControllerBuilder() .setOldController(mDraweeView.getController()) .setImageRequest(request) .build();mSimpleDraweeView.setController(controller);

注意這個方案在低版本中默認只支持jpg圖片,如需支持其它圖片格式,需在設置image pipeline時添加isDownSample配置。同時對于產生的圖片的尺寸,只能粗略地控制,圖片不能修改為確定的尺寸。

.setDownsampleEnabled(true)

這個方案有個顯著的缺點,那就是頁面適配性極差,需要配合View層的生命周期在確保能夠動態獲取到控件寬高的時機進行調用,對于一個成熟的項目工程,代碼改動量過大,優化成本過高。 這里采用編寫SimpleDraweeView的子類進行優化,利用向上轉型,盡可能的減小View層代碼的改動,只需要修改xml布局文件中的控件聲明即可。 方案架構圖如下:

Android Fresco圖片加載優化的方案

其中DesiredSimpleDraweeView為SimpleDraweeView的子類,在onWindowFocusChanged方法回調中可以明確獲知控件的具體寬高,之后再進行圖片加載操作。

public class DesiredSimpleDraweeView extends SimpleDraweeView { Uri mUri; Object mCallerContext; public DesiredSimpleDraweeView(Context context) { super(context); } @Override public void setImageURI(Uri uri, Object callerContext) { mUri = uri; mCallerContext = callerContext; } private void setImageURI(int width, int height) { try { ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(mUri) .setResizeOptions(new ResizeOptions(width, height)) .build(); DraweeController controller = getControllerBuilder() .setOldController(getController()) .setImageRequest(imageRequest) .build(); setController(controller); } catch (Exception ex) { ex.printStackTrace(); } } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus); if (hasWindowFocus) { setImageURI(getWidth(), getHeight()); } }}

復寫setImageURI(Uri,Object)方法,暫存uri和callerContext,在onWindowFoucusChanged回調之后再根據控件寬高進行圖片的加載。 這樣,利用向上轉型,View層的代碼無需改動,xml文件中替換控件聲明后即可顯著提高內存利用率。

注意事項

性能優化是條永無止境的道路,沒有最牛逼的方案,只有最合適的方案。如果對于圖片加載尺寸想要精確控制,按需加載,Glide或許是更好的選擇。

以上就是Android Fresco圖片加載優化的方案的詳細內容,更多關于Android Fresco圖片加載優化的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美成人综合| 久久中文精品| 99在线精品免费视频九九视| 亚洲免费专区| 高清一区二区| 黄色欧美日韩| 欧美xxxx中国| 日韩精品第一| 国产综合激情| 国产成人免费| 欧美日韩中文一区二区| 国产免费播放一区二区| 亚洲精品中文字幕乱码| 在线精品国产亚洲| 激情综合网站| 亚洲欧美高清| 麻豆精品在线| 夜夜嗨网站十八久久| 国产日本久久| 一本综合精品| 久久国产精品美女| 亚洲va久久久噜噜噜久久| 国产欧美三级| 久久精品123| 里番精品3d一二三区| 日本精品在线中文字幕| 国产精品1区在线| av亚洲一区二区三区| 蜜臀久久久久久久| 99视频+国产日韩欧美| 91免费精品国偷自产在线在线| 亚洲欧洲另类| 欧美日韩a区| 久久精品一区二区三区中文字幕| 亚洲国产影院| 国产精品三p一区二区| 不卡中文一二三区| 久久只有精品| 日韩1区2区3区| 亚洲二区免费| 日韩高清欧美激情| 亚洲夜间福利| 动漫av一区| 日韩精品五月天| 免费欧美一区| 国产 日韩 欧美 综合 一区| 久久国产66| 久久精品青草| 麻豆极品一区二区三区| 日韩欧美四区| 国产精品老牛| 国产色播av在线| 久久久91麻豆精品国产一区| 国产黄色一区| 亚洲中字黄色| 电影91久久久| 视频一区免费在线观看| 久久99久久久精品欧美| 在线亚洲欧美| 国产一区二区三区探花| 一区二区电影| 日本久久综合| 亚洲欧美日韩高清在线| 国产高清亚洲| 91久久久久| 国产在线观看www| 日韩高清不卡一区| 免费国产自久久久久三四区久久 | 黄色国产精品| 欧美成人精品三级网站| 久久久久亚洲精品中文字幕| 国产精品探花在线观看| 亚洲永久字幕| 91精品综合| 美女福利一区二区三区| 黄色亚洲免费| 精品丝袜在线| sm久久捆绑调教精品一区| 久久久亚洲欧洲日产| 国产毛片精品| 国产日韩欧美一区二区三区在线观看 | 欧美在线亚洲| 日韩在线观看一区| 国产一区二区三区不卡av| 国产精品嫩草影院在线看| 日韩av二区在线播放| 亚洲啊v在线免费视频| 最新国产精品视频| 亚州精品视频| 日韩高清在线不卡| 日韩成人午夜精品| 日本成人在线视频网站| 四虎在线精品| 欧美一级二区| 久久国产精品色av免费看| 欧美一区激情| 欧美黄色精品| 久久男人av| 欧美韩日一区| 日韩国产综合| 一本大道色婷婷在线| 日韩欧美一区二区三区在线视频| 理论片午夜视频在线观看| 日韩电影在线视频| 在线日韩电影| 一区二区三区四区精品视频| 日韩欧美在线精品| 国产精品日韩精品在线播放 | 国产成人精品三级高清久久91| 精品国产不卡一区二区| 91亚洲自偷观看高清| sm久久捆绑调教精品一区| 日韩不卡在线| 亚洲欧美日本国产专区一区| 亚洲欧洲日韩| 国产精品大片免费观看| 国产成年精品| 香蕉精品久久| 免费观看在线综合| 国产精品日韩精品在线播放| 成人在线免费观看91| 欧美91视频| 日欧美一区二区| 美腿丝袜亚洲一区| 色偷偷色偷偷色偷偷在线视频| 久久精品高清| 羞羞答答国产精品www一本| 亚洲精品麻豆| 成人在线免费观看网站| 午夜国产一区二区| av资源新版天堂在线| 99香蕉国产精品偷在线观看| 欧美日韩18| 久久精品二区三区| 日韩国产欧美在线播放| 久久影院资源站| 黑人精品一区| 黄色在线网站噜噜噜| 久久精品1区| 久久亚洲不卡| 久久国产三级| 麻豆精品视频在线观看免费| 国产在线一区不卡| 日韩免费久久| 亚洲欧美高清| 国产精品久av福利在线观看| 国产精品99在线观看| 99精品美女| 免费观看在线色综合| 国产精品久久久久久久久久齐齐 | 亚洲主播在线| 久久久免费人体| 亚洲免费网址| 精品久久久网| 视频一区二区中文字幕| 久久精品伊人| 免费不卡在线观看| 青青青免费在线视频| 国产一区二区三区天码| 日韩在线观看一区二区| 精品一区视频| 蜜桃视频一区二区| 成人欧美一区二区三区的电影| 日韩精品一二三| 久久男人av| 亚洲性视频在线| 国产999精品在线观看| 日韩中文字幕区一区有砖一区 | 视频在线观看一区二区三区| 精品三级av| 亚洲伊人精品酒店| 成人日韩在线| 日韩高清一区在线| 欧美+亚洲+精品+三区| 国产精品久久久久久久久免费高清| 亚洲作爱视频| 少妇久久久久| 美女视频免费精品| 午夜天堂精品久久久久| 久久影视一区| 九九九精品视频| 日韩动漫一区| 宅男噜噜噜66国产日韩在线观看| 日韩深夜视频| 国产精品s色| 亚洲精品系列| 欧美在线资源| 黄色在线网站噜噜噜| 国产精品激情| 日韩av网站在线免费观看| 亚洲一区二区三区免费在线观看| 日韩国产一区二区三区| 美女久久久久久 | 日韩av一二三| 另类国产ts人妖高潮视频| 欧美成人精品三级网站| 久久精品人人| 国产日韩一区二区三区在线| 视频一区视频二区中文| 91久久久精品国产|