1. 程式人生 > >Android 圖片快取與載入方式

Android 圖片快取與載入方式

開場白
從開始開發Android到現在使用的好多載入圖片的框架,剛開始什麼都不懂就看第三方封裝的框架是如何載入的,然後照搬過來使用,只要能加載出圖片就算工作完成,我才不考慮什麼好不好?對不對?因為我自己也不知道什麼是好,到後來逐漸在各種遇到的大神的指導下知道,正確的載入方法。但現在我又發現正確的方法裡面更優的,給大家做個推薦,希望能夠幫助大家。

載入框架介紹
之前專案開發中最常用的圖片快取和載入就是Picasso和Glide,這兩種方式用法基本相同。
Picasso

Picasso.with(context).load(url).into(img);

Glide

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 。