Android 圖片快取與載入方式
阿新 • • 發佈:2019-02-13
開場白
從開始開發Android到現在使用的好多載入圖片的框架,剛開始什麼都不懂就看第三方封裝的框架是如何載入的,然後照搬過來使用,只要能加載出圖片就算工作完成,我才不考慮什麼好不好?對不對?因為我自己也不知道什麼是好,到後來逐漸在各種遇到的大神的指導下知道,正確的載入方法。但現在我又發現正確的方法裡面更優的,給大家做個推薦,希望能夠幫助大家。
載入框架介紹
之前專案開發中最常用的圖片快取和載入就是Picasso和Glide,這兩種方式用法基本相同。
Picasso
Picasso.with(context).load(url).into(img);
Glide.whith(this).load (url).into(img);
ImageLoader imageLoader = ImageLoader.getInstance(); //獲取例項
imageLoader.init(ImageLoaderConfiguration); //初始化ImageLoader
imageLoader.displayImage(imageUri, imageView); //顯示圖片
imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete (String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
}
});
Bitmap bmp = imageLoader.loadImageSync(imageUri); //非同步獲取Bitmap
Fresco
傳統的快取的方式是磁碟快取和記憶體快取app經常會出現OOM,OOM這種問題出現解決起來也比較麻煩。後來發現Fecebook推出了Fresco,Fresco採用的是一級快取(Native快取),這種方式極大的降低了我們的app出現OOM。
函式庫大小分析
Picasso:120KB
Glide:475KB
Android-Universal-Image-Loader:162KB
Fresco:47KB+93KB+93KB+10KB+3MB+62KB+8KB+111KB = 3.4MB
最後,如果APP中嚴重依賴圖片快取,那就選擇Fresco,一般的APP根據自己的需求選擇其他的框架就好了,畢竟Fresco3.4MBl 。