日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Universal-imageLoader缓存图片加载

發(fā)布時(shí)間:2025/3/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Universal-imageLoader缓存图片加载 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一,先要配置ImageLoaderConfiguration這個(gè)類實(shí)現(xiàn)全局ImageLoader的實(shí)現(xiàn)情況

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).memoryCacheExtraOptions(480, 800)// max width, max height,即保存的每個(gè)緩存文件的最大長(zhǎng)寬.discCacheExtraOptions(480, 800, null)//Can slow ImageLoader, use it carefully (Better don't use// it)/設(shè)置緩存的詳細(xì)信息,最好不要設(shè)置這個(gè).threadPoolSize(3)// 線程池內(nèi)加載的數(shù)量.threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory().memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))// You can pass your own memory cache// implementation/你可以通過(guò)自己的內(nèi)存緩存實(shí)現(xiàn).memoryCacheSize(2 * 1024 * 1024)//內(nèi)存大小.discCacheSize(50 * 1024 * 1024)//硬盤大小.discCacheFileNameGenerator(new Md5FileNameGenerator())// 將保存的時(shí)候的URI名稱用MD5 加密.tasksProcessingOrder(QueueProcessingType.LIFO).discCacheFileCount(100) // 緩存的文件數(shù)量 .discCache(new UnlimitedDiscCache(new File(Environment.getExternalStorageDirectory()+ "/myApp/imgCache"))) // 自定義緩存路徑 .defaultDisplayImageOptions(getDisplayOptions()).imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)).writeDebugLogs() // Remove for release app.build();// 開始構(gòu)建ImageLoader.getInstance().init(config);//全局初始化此配置<span style="margin: 0px; padding: 0px; border: currentcolor; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px; background-color: inherit;">?</span>
二,使用ImageLoader進(jìn)行圖片加載的時(shí)候,先要實(shí)例化ImageLoader

protected ImageLoader imageLoader = ImageLoader.getInstance(); 之后進(jìn)行顯示的圖片的各種格式DisplayImageOptions 的設(shè)置

DisplayImageOptions options;options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher)// 設(shè)置圖片在下載期間顯示的圖片.showImageForEmptyUri(R.drawable.ic_launcher)// 設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片.showImageOnFail(R.drawable.ic_launcher) // 設(shè)置圖片加載/解碼過(guò)程中錯(cuò)誤時(shí)候顯示的圖片.cacheInMemory(true)// 設(shè)置下載的圖片是否緩存在內(nèi)存中.cacheOnDisc(true)// 設(shè)置下載的圖片是否緩存在SD卡中.considerExifParams(true) // 是否考慮JPEG圖像EXIF參數(shù)(旋轉(zhuǎn),翻轉(zhuǎn)).imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 設(shè)置圖片以如何的編碼方式顯示.bitmapConfig(Bitmap.Config.RGB_565)// 設(shè)置圖片的解碼類型//// .delayBeforeLoading(int delayInMillis)//int// delayInMillis為你設(shè)置的下載前的延遲時(shí)間// 設(shè)置圖片加入緩存前,對(duì)bitmap進(jìn)行設(shè)置// .preProcessor(BitmapProcessor preProcessor).resetViewBeforeLoading(true)// 設(shè)置圖片在下載前是否重置,復(fù)位.displayer(new RoundedBitmapDisplayer(20))// 是否設(shè)置為圓角,弧度為多少.displayer(new FadeInBitmapDisplayer(100))// 是否圖片加載好后漸入的動(dòng)畫時(shí)間.build();// 構(gòu)建完成

按照你所需要的配置去設(shè)置,如果不需要的就可以不做配置。

三,三者的關(guān)系

ImageLoaderConfiguration是針對(duì)圖片緩存的全局配置,主要有線程類、緩存大小、磁盤大小、圖片下載與解析、日志方面的配置。

ImageLoader是具體下載圖片,緩存圖片,顯示圖片的具體執(zhí)行類,它有兩個(gè)具體的方法displayImage(...)、loadImage(...),但是其實(shí)最終他們的實(shí)現(xiàn)都是displayImage(...)。

DisplayImageOptions用于指導(dǎo)1,每一個(gè)Imageloader根據(jù)網(wǎng)絡(luò)圖片的狀態(tài)(空白、下載錯(cuò)誤、正在下載)顯示對(duì)應(yīng)的圖片,2,是否將緩存加載到磁盤上,下載完后對(duì)圖片進(jìn)行怎么樣的處理。

從三者的協(xié)作關(guān)系上看,他們有點(diǎn)像廚房規(guī)定、廚師、客戶個(gè)人口味之間的關(guān)系。ImageLoaderConfiguration就像是廚房里面的規(guī)定,每一個(gè)廚師要怎么著裝,要怎么保持廚房的干凈,這是針對(duì)每一個(gè)廚師都適用的規(guī)定,而且不允許個(gè)性化改變。ImageLoader就像是具體做菜的廚師,負(fù)責(zé)具體菜譜的制作。DisplayImageOptions就像每個(gè)客戶的偏好,根據(jù)客戶是重口味還是清淡,每一個(gè)imageLoader根據(jù)DisplayImageOptions的要求具體執(zhí)行。

1.純粹為了加載默認(rèn)配置的一個(gè)圖片的

ImageLoader.getInstance().displayImage(imageUrl, imageView); // imageUrl代表圖片的URL地址,imageView代表承載圖片的IMAGEVIEW控件

import java.io.File;import android.app.Application; import android.graphics.Bitmap; import android.os.Environment;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.nostra13.universalimageloader.core.download.BaseImageDownloader;public class MyApplication extends Application {@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).memoryCacheExtraOptions(480, 800)// max width, max height,即保存的每個(gè)緩存文件的最大長(zhǎng)寬.discCacheExtraOptions(480, 800, null)//Can slow ImageLoader, use it carefully (Better don't use// it)/設(shè)置緩存的詳細(xì)信息,最好不要設(shè)置這個(gè).threadPoolSize(3)// 線程池內(nèi)加載的數(shù)量.threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory().memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))// You can pass your own memory cache// implementation/你可以通過(guò)自己的內(nèi)存緩存實(shí)現(xiàn).memoryCacheSize(2 * 1024 * 1024)//內(nèi)存大小.discCacheSize(50 * 1024 * 1024)//硬盤大小.discCacheFileNameGenerator(new Md5FileNameGenerator())// 將保存的時(shí)候的URI名稱用MD5 加密.tasksProcessingOrder(QueueProcessingType.LIFO).discCacheFileCount(100) // 緩存的文件數(shù)量 .discCache(new UnlimitedDiscCache(new File(Environment.getExternalStorageDirectory()+ "/myApp/imgCache"))) // 自定義緩存路徑 .defaultDisplayImageOptions(getDisplayOptions()).imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)).writeDebugLogs() // Remove for release app.build();// 開始構(gòu)建//全局初始化此配置 ImageLoader.getInstance().init(config);}private DisplayImageOptions getDisplayOptions() {DisplayImageOptions options;options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher)// 設(shè)置圖片在下載期間顯示的圖片.showImageForEmptyUri(R.drawable.ic_launcher)// 設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片.showImageOnFail(R.drawable.ic_launcher) // 設(shè)置圖片加載/解碼過(guò)程中錯(cuò)誤時(shí)候顯示的圖片.cacheInMemory(true)// 設(shè)置下載的圖片是否緩存在內(nèi)存中.cacheOnDisc(true)// 設(shè)置下載的圖片是否緩存在SD卡中.considerExifParams(true) // 是否考慮JPEG圖像EXIF參數(shù)(旋轉(zhuǎn),翻轉(zhuǎn)).imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 設(shè)置圖片以如何的編碼方式顯示.bitmapConfig(Bitmap.Config.RGB_565)// 設(shè)置圖片的解碼類型//// .delayBeforeLoading(int delayInMillis)//int// delayInMillis為你設(shè)置的下載前的延遲時(shí)間// 設(shè)置圖片加入緩存前,對(duì)bitmap進(jìn)行設(shè)置// .preProcessor(BitmapProcessor preProcessor).resetViewBeforeLoading(true)// 設(shè)置圖片在下載前是否重置,復(fù)位.displayer(new RoundedBitmapDisplayer(20))// 是否設(shè)置為圓角,弧度為多少.displayer(new FadeInBitmapDisplayer(100))// 是否圖片加載好后漸入的動(dòng)畫時(shí)間.build();// 構(gòu)建完成return options;} } public class MainActivity extends Activity {private ImageLoader loader;private ImageView iv_img;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);loader = ImageLoader.getInstance();iv_img = (ImageView) this.findViewById(R.id.iv_img);String uri = "file:///" + "本地路徑"; // loader.displayImage( // "http://s1.jikexueyuan.com/current/static/images/logo.png", // iv_img);loader.displayImage("http://s1.jikexueyuan.com/current/static/images/logo.png",iv_img, new ImageLoadingListener() {@Overridepublic void onLoadingStarted(String arg0, View arg1) {Log.i("info", "onLoadingStarted");}@Overridepublic void onLoadingFailed(String arg0, View arg1,FailReason arg2) {Log.i("info", "onLoadingFailed");}@Overridepublic void onLoadingComplete(String arg0, View arg1,Bitmap arg2) {Log.i("info", "onLoadingComplete");}@Overridepublic void onLoadingCancelled(String arg0, View arg1) {Log.i("info", "onLoadingCancelled");}});}
2.加載自定義配置的一個(gè)圖片的

ImageLoader.getInstance().displayImage(imageUrl, imageView,options); // imageUrl代表圖片的URL地址,imageView代表承載圖片的IMAGEVIEW控件 , options代表DisplayImageOptions配置文件 options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_stub) // 設(shè)置圖片下載期間顯示的圖片.showImageForEmptyUri(R.drawable.ic_empty) // 設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片.showImageOnFail(R.drawable.ic_error) // 設(shè)置圖片加載或解碼過(guò)程中發(fā)生錯(cuò)誤顯示的圖片.cacheInMemory(true) // 設(shè)置下載的圖片是否緩存在內(nèi)存中.cacheOnDisk(true) // 設(shè)置下載的圖片是否緩存在SD卡中.displayer(new RoundedBitmapDisplayer(20)) // 設(shè)置成圓角圖片.build();
3.圖片加載時(shí)候帶加載情況的監(jiān)聽

imageLoader.displayImage(imageUrl, imageView, options, new ImageLoadingListener() { @Override public void onLoadingStarted() { //開始加載的時(shí)候執(zhí)行 } @Override public void onLoadingFailed(FailReason failReason) { //加載失敗的時(shí)候執(zhí)行 } @Override public void onLoadingComplete(Bitmap loadedImage) { //加載成功的時(shí)候執(zhí)行 } @Override public void onLoadingCancelled() { //加載取消的時(shí)候執(zhí)行 }});


四,ListView和GridView中的圖片緩存

BaseActivity.java

package com.xwj.imageloaderdemo;import com.nostra13.universalimageloader.core.ImageLoader;import android.app.Activity; import android.os.Bundle;public abstract class BaseActivity extends Activity {protected ImageLoader imageLoader;/*** 初始化布局資源文件*/public abstract int initResource();/*** 初始化組件*/public abstract void initComponent();/*** 初始化數(shù)據(jù)*/public abstract void initData();/*** 添加監(jiān)聽*/public abstract void addListener();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(initResource());imageLoader = ImageLoader.getInstance();initComponent();initData();addListener();}} ImageGridActivity.java

package com.xwj.imageloaderdemo;import android.R.integer; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView;import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.xwj.util.Constants;public class ImageGridActivity extends BaseActivity{private GridView mGridGv;private DisplayImageOptions options; // 設(shè)置圖片顯示相關(guān)參數(shù)private String[] imageUrls; // 圖片路徑@Overridepublic int initResource() {return R.layout.activity_gridview;}@Overridepublic void initComponent() {mGridGv = (GridView) findViewById(R.id.gv_image);}@Overridepublic void initData() {Bundle bundle = getIntent().getExtras();imageUrls = bundle.getStringArray(Constants.IMAGES);options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_stub) // 設(shè)置圖片下載期間顯示的圖片.showImageForEmptyUri(R.drawable.ic_empty) // 設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片.showImageOnFail(R.drawable.ic_error) // 設(shè)置圖片加載或解碼過(guò)程中發(fā)生錯(cuò)誤顯示的圖片.cacheInMemory(true) // 設(shè)置下載的圖片是否緩存在內(nèi)存中.cacheOnDisk(true) // 設(shè)置下載的圖片是否緩存在SD卡中.displayer(new RoundedBitmapDisplayer(20)) // 設(shè)置成圓角圖片.build();mGridGv.setAdapter(new ItemGridAdapter());}@Overridepublic void addListener() {mGridGv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {}});}class ItemGridAdapter extends BaseAdapter{@Overridepublic int getCount() {return imageUrls.length;}@Overridepublic Object getItem(int position) {return imageUrls[position];}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;if (convertView == null) {viewHolder = new ViewHolder();convertView = getLayoutInflater().inflate(R.layout.item_grid, parent, false);viewHolder.image = (ImageView) convertView.findViewById(R.id.iv_grid_image);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}imageLoader.displayImage(imageUrls[position], viewHolder.image, options);return convertView;}public class ViewHolder {public ImageView image;}}}
ImageListActivity.java

package com.xwj.imageloaderdemo;import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView;import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.xwj.util.Constants;public class ImageListActivity extends BaseActivity {private ListView mListImageLv;private DisplayImageOptions options; // 設(shè)置圖片顯示相關(guān)參數(shù)private String[] imageUrls; // 圖片路徑@Overridepublic int initResource() {return R.layout.activity_list;}@Overridepublic void initComponent() {mListImageLv = (ListView) findViewById(R.id.lv_image);}@Overridepublic void initData() {Bundle bundle = getIntent().getExtras();imageUrls = bundle.getStringArray(Constants.IMAGES);// 使用DisplayImageOptions.Builder()創(chuàng)建DisplayImageOptionsoptions = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_stub) // 設(shè)置圖片下載期間顯示的圖片.showImageForEmptyUri(R.drawable.ic_empty) // 設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片.showImageOnFail(R.drawable.ic_error) // 設(shè)置圖片加載或解碼過(guò)程中發(fā)生錯(cuò)誤顯示的圖片.cacheInMemory(true) // 設(shè)置下載的圖片是否緩存在內(nèi)存中.cacheOnDisk(true) // 設(shè)置下載的圖片是否緩存在SD卡中.displayer(new RoundedBitmapDisplayer(20)) // 設(shè)置成圓角圖片.build(); // 構(gòu)建完成mListImageLv.setAdapter(new ItemListAdapter());}@Overridepublic void addListener() {}class ItemListAdapter extends BaseAdapter {@Overridepublic int getCount() {return imageUrls.length;}@Overridepublic Object getItem(int position) {return imageUrls[position];}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;if (convertView == null) {convertView = getLayoutInflater().inflate(R.layout.item_list,null);viewHolder = new ViewHolder();viewHolder.image = (ImageView) convertView.findViewById(R.id.iv_image);viewHolder.text = (TextView) convertView.findViewById(R.id.tv_introduce);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}/*** imageUrl 圖片的Url地址 imageView 承載圖片的ImageView控件 options* DisplayImageOptions配置文件*/imageLoader.displayImage(imageUrls[position],viewHolder.image, options);viewHolder.text.setText("Item " + (position + 1)); // TextView設(shè)置文本return convertView;}public class ViewHolder {public ImageView image;public TextView text;}}} ImageLoaderApplication.java

package com.xwj.imageloaderdemo;import java.io.File;import android.app.Application; import android.content.Context;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.download.BaseImageDownloader; import com.nostra13.universalimageloader.utils.StorageUtils;public class ImageLoaderApplication extends Application {public void onCreate() {super.onCreate();initImageLoader(getApplicationContext());}public static void initImageLoader(Context context) {//緩存文件的目錄File cacheDir = StorageUtils.getOwnCacheDirectory(context, "imageloader/Cache"); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).memoryCacheExtraOptions(480, 800) // max width, max height,即保存的每個(gè)緩存文件的最大長(zhǎng)寬 .threadPoolSize(3) //線程池內(nèi)加載的數(shù)量.threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory().diskCacheFileNameGenerator(new Md5FileNameGenerator()) //將保存的時(shí)候的URI名稱用MD5 加密.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通過(guò)自己的內(nèi)存緩存實(shí)現(xiàn).memoryCacheSize(2 * 1024 * 1024) // 內(nèi)存緩存的最大值.diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)緩存的最大值.tasksProcessingOrder(QueueProcessingType.LIFO)// 由原先的discCache -> diskCache.diskCache(new UnlimitedDiscCache(cacheDir))//自定義緩存路徑 .imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超時(shí)時(shí)間 .writeDebugLogs() // Remove for release app.build();//全局初始化此配置 ImageLoader.getInstance().init(config);} }
manifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.xwj.imageloaderdemo"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="21" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.INTERNET" /><applicationandroid:name="com.xwj.imageloaderdemo.ImageLoaderApplication"android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.xwj.imageloaderdemo.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name="com.xwj.imageloaderdemo.ImageListActivity"></activity><activity android:name="com.xwj.imageloaderdemo.ImageGridActivity"></activity></application></manifest>本地圖片Uri:
String imageUri = "http://site.com/image.png"; // from Web String imageUri = "file:///mnt/sdcard/image.png"; // from SD card String imageUri = "content://media/external/audio/albumart/13"; // from content provider String imageUri = "assets://image.png"; // from assets String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)

2.1.DiskCache 磁盤緩存

1) UnlimitedDiscCache不限制緩存大小;

2) UnlimitedDiscCache很簡(jiǎn)單它只是簡(jiǎn)單的繼承了BaseDiscCache并未對(duì)BaseDiscCache做任何擴(kuò)展;
3) LimitedAgeDiscCache限制緩存時(shí)間;

4) LimitedAgeDiscCache該類實(shí)現(xiàn)了在緩存中刪除被加載超過(guò)規(guī)定時(shí)間的文件:滿足以下條件的時(shí)候就從緩存中刪除文件:系統(tǒng)當(dāng)前時(shí)間-文件的最新修改時(shí)間 > maxFileAge;

2.2.MemoryCache內(nèi)存緩存

1) 通過(guò)實(shí)現(xiàn)接口MemoryCacheAware <String,Bitmap>來(lái)實(shí)現(xiàn)自己的緩存

2) UsingFreqLimitedCache (最少被用到的對(duì)象會(huì)被刪除)

3) UsingAgeLimitedCache (最早被添加的對(duì)象會(huì)被刪除)

4) LargestLimitedCache (空間占用最大的對(duì)象會(huì)被刪除)

5) FIFOLimitedCache (根據(jù)先進(jìn)先出的原則上刪除多余對(duì)象)

2.3.不要忘記緩存的清理

一般要在整個(gè)應(yīng)用結(jié)束的時(shí)候調(diào)用下面兩個(gè)方法,分別情況內(nèi)存緩存和磁盤緩存,提高用戶體驗(yàn) :
i. imageLoader.clearMemoryCache();
ii. imageLoader.clearDiskCache();


4.如果經(jīng)常出現(xiàn)OOM(別人那邊看到的,覺得很有提的必要)
①減少配置之中線程池的大小,(.threadPoolSize).推薦1-5
使用.bitmapConfig(Bitmap.config.RGB_565)代替ARGB_8888;
③使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者 try.imageScaleType(ImageScaleType.EXACTLY);
④避免使用RoundedBitmapDisplayer.他會(huì)創(chuàng)建新的ARGB_8888格式的Bitmap對(duì)象;
⑤使用.memoryCache(new WeakMemoryCache()),不要使用.cacheInMemory();

參考:

http://www.open-open.com/lib/view/open1433940304473.html

http://www.cnblogs.com/kissazi2/p/3886563.html

http://blog.csdn.net/vipzjyno1/article/details/23206387


總結(jié)

以上是生活随笔為你收集整理的Universal-imageLoader缓存图片加载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲视频网址 | 成人天堂av | 九九热只有精品 | 久久久看 | 美女av一区二区 | 国产日韩欧美综合 | 国产精彩视频在线观看 | 97超碰免费在线观看 | 国产又粗又爽视频 | 热热av| 日本黄色电影网址 | 精品三区| 狠狠爱av| 青青视频网 | 波多野结衣视频在线 | 亚洲精品日韩在线观看 | 外国av在线 | 激情超碰在线 | 手机成人av在线 | 男女作爱网站 | 久久久久婷 | 亚洲色图第一区 | 国产成人一区二区三区 | 亚洲色图激情 | 爱情岛亚洲品质自拍极速福利网站 | 五月天激情视频在线观看 | 国产主播精品在线 | 免费观看一区二区三区毛片 | 欧美骚视频 | av一区在线观看 | 黑人性视频 | 久久久久亚洲AV | 97精品一区二区视频在线观看 | 国语对白少妇spa私密按摩 | 国产v综合v亚洲欧美久久 | av大全网站| 97热久久| 亚洲精品精品 | 国产一区二区啪啪啪 | 国产乱妇乱子 | 亚洲美女高潮久久久 | 色视频网 | 国产小视频在线看 | 日批视频免费观看 | 毛片直接看| 欧美日韩在线中文字幕 | 欧美另类精品 | 中文字幕1区 | 久久久亚洲综合 | 亚洲天堂久久久 | 不卡av一区二区 | 99久久久无码国产精品性波多 | 成年人在线视频 | 欧美一区二区三区日韩 | 精品人妻无码一区二区三 | 国产ts丝袜人妖系列视频 | 全黄性性激高免费视频 | 在线看欧美| av在线免播放器 | 欧美无人区码suv | 欧美日韩在线影院 | www.久久艹 | 久操视频网 | 人妻丰满熟妇av无码区不卡 | 欧美日韩一区二区三区在线视频 | 亚洲精品中文字幕 | 亚洲综合免费观看高清完整版在线 | 一级免费av | 人妻少妇精品一区二区三区 | 国产理论片 | 亚洲美免无码中文字幕在线 | 激情九九| 久99精品 | 黄色片免费网站 | 色一情一乱一乱一区91av | 中文亚洲av片不卡在线观看 | 蜜桃av在线看| 中文字幕韩日 | 欧美肉丝袜videos办公室 | 四虎网址大全 | 日韩精品网站 | 天天射天天 | 国模私拍av | 久操欧美| 性色国产成人久久久精品 | 久久久久亚洲av无码麻豆 | 日本内谢少妇xxxxx少交 | 国产精品久久在线 | 国产精品激情偷乱一区二区∴ | 国产三级视频在线播放 | 亚洲丝袜视频 | 色婷婷网 | 少妇精品高潮欲妇又嫩中文字幕 | 国产色爽| 粉色视频免费 | 国产成人福利视频 | 寂寞人妻瑜伽被教练日 | 91无毒不卡 | 风韵少妇性饥渴推油按摩视频 |