package com.topnews.app; import java.io.File; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.utils.StorageUtils; import com.topnews.db.SQLHelper; import android.app.Application; import android.content.Context; import android.util.Log; public class AppApplication extends Application { private static AppApplication mAppApplication; private SQLHelper sqlHelper; @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); initImageLoader(getApplicationContext()); mAppApplication = this; } /** 获取Application */ public static AppApplication getApp() { return mAppApplication; } /** 获取数据库Helper */ public SQLHelper getSQLHelper() { if (sqlHelper == null) sqlHelper = new SQLHelper(mAppApplication); return sqlHelper; } @Override public void onTerminate() { // TODO Auto-generated method stub if (sqlHelper != null) sqlHelper.close(); super.onTerminate(); //整体摧毁的时候调用这个方法 } /** 初始化ImageLoader */ public static void initImageLoader(Context context) { File cacheDir = StorageUtils.getOwnCacheDirectory(context, "topnews/Cache");//获取到缓存的目录地址 Log.d("cacheDir", cacheDir.getPath()); //创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数 ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(context) //.memoryCacheExtraOptions(480, 800) // max width, max height,即保存的每个缓存文件的最大长宽 //.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null) // Can slow ImageLoader, use it carefully (Better don't use it)设置缓存的详细信息,最好不要设置这个 .threadPoolSize(3)//线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() //.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation你可以通过自己的内存缓存实现 //.memoryCacheSize(2 * 1024 * 1024) ///.discCacheSize(50 * 1024 * 1024) .discCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密 //.discCacheFileNameGenerator(new HashCodeFileNameGenerator())//将保存的时候的URI名称用HASHCODE加密 .tasksProcessingOrder(QueueProcessingType.LIFO) //.discCacheFileCount(100) //缓存的File数量 .discCache(new UnlimitedDiscCache(cacheDir))//自定义缓存路径 //.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) //.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间 .writeDebugLogs() // Remove for release app .build(); // Initialize ImageLoader with configuration. ImageLoader.getInstance().init(config);//全局初始化此配置 } }