Skip to content

Commit 84e103a

Browse files
committed
优化Bitmap配置
1 parent e84ee97 commit 84e103a

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

library/src/com/lidroid/xutils/BitmapUtils.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public BitmapUtils(Context context, String diskCachePath) {
6060
throw new IllegalArgumentException("context may not be null");
6161
}
6262

63-
this.context = context;
64-
globalConfig = new BitmapGlobalConfig(context, diskCachePath);
63+
this.context = context.getApplicationContext();
64+
globalConfig = BitmapGlobalConfig.getInstance(this.context, diskCachePath);
6565
defaultDisplayConfig = new BitmapDisplayConfig();
6666
}
6767

@@ -199,11 +199,6 @@ public BitmapUtils configBitmapCacheListener(BitmapCacheListener listener) {
199199
return this;
200200
}
201201

202-
public BitmapUtils configGlobalConfig(BitmapGlobalConfig globalConfig) {
203-
this.globalConfig = globalConfig;
204-
return this;
205-
}
206-
207202
////////////////////////// display ////////////////////////////////////
208203

209204
public <T extends View> void display(T container, String uri) {

library/src/com/lidroid/xutils/bitmap/BitmapGlobalConfig.java

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@
2121
import com.lidroid.xutils.bitmap.core.BitmapCache;
2222
import com.lidroid.xutils.bitmap.download.DefaultDownloader;
2323
import com.lidroid.xutils.bitmap.download.Downloader;
24+
import com.lidroid.xutils.cache.FileNameGenerator;
2425
import com.lidroid.xutils.task.Priority;
25-
import com.lidroid.xutils.util.LogUtils;
26-
import com.lidroid.xutils.util.OtherUtils;
2726
import com.lidroid.xutils.task.PriorityAsyncTask;
28-
import com.lidroid.xutils.cache.FileNameGenerator;
2927
import com.lidroid.xutils.task.PriorityExecutor;
28+
import com.lidroid.xutils.util.LogUtils;
29+
import com.lidroid.xutils.util.OtherUtils;
30+
31+
import java.util.HashMap;
3032

3133
/**
3234
* Author: wyouflf
@@ -60,27 +62,40 @@ public class BitmapGlobalConfig {
6062
private BitmapCacheListener bitmapCacheListener;
6163

6264
private Context mContext;
65+
private final static HashMap<String, BitmapGlobalConfig> configMap = new HashMap<String, BitmapGlobalConfig>(1);
6366

6467
/**
6568
* @param context
6669
* @param diskCachePath If null, use default appCacheDir+"/xBitmapCache"
6770
*/
68-
public BitmapGlobalConfig(Context context, String diskCachePath) {
71+
private BitmapGlobalConfig(Context context, String diskCachePath) {
6972
if (context == null) throw new IllegalArgumentException("context may not be null");
7073
this.mContext = context;
7174
this.diskCachePath = diskCachePath;
7275
initBitmapCache();
7376
}
7477

78+
public static BitmapGlobalConfig getInstance(Context context, String diskCachePath) {
79+
80+
if (TextUtils.isEmpty(diskCachePath)) {
81+
diskCachePath = OtherUtils.getDiskCacheDir(context, "xBitmapCache");
82+
}
83+
84+
if (configMap.containsKey(diskCachePath)) {
85+
return configMap.get(diskCachePath);
86+
} else {
87+
BitmapGlobalConfig config = new BitmapGlobalConfig(context, diskCachePath);
88+
configMap.put(diskCachePath, config);
89+
return config;
90+
}
91+
}
92+
7593
private void initBitmapCache() {
7694
new BitmapCacheManagementTask().execute(BitmapCacheManagementTask.MESSAGE_INIT_MEMORY_CACHE);
7795
new BitmapCacheManagementTask().execute(BitmapCacheManagementTask.MESSAGE_INIT_DISK_CACHE);
7896
}
7997

8098
public String getDiskCachePath() {
81-
if (TextUtils.isEmpty(diskCachePath)) {
82-
diskCachePath = OtherUtils.getDiskCacheDir(mContext, "xBitmapCache");
83-
}
8499
return diskCachePath;
85100
}
86101

0 commit comments

Comments
 (0)