package com.tiger.quicknews; import android.app.Application; import android.content.Context; import android.os.Environment; import android.util.Log; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; 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; import com.tiger.quicknews.db.SQLHelper; import org.androidannotations.annotations.EApplication; import java.io.File; @EApplication public class App extends Application { private static App mAppApplication; private SQLHelper sqlHelper; @Override public void onCreate() { super.onCreate(); mAppApplication = this; initImageLoader(getApplicationContext()); } /** 获取Application */ public static App getApp() { return mAppApplication; } /** 获取数据库Helper */ public SQLHelper getSQLHelper() { if (sqlHelper == null) sqlHelper = new SQLHelper(mAppApplication); return sqlHelper; } @Override public void onTerminate() { if (sqlHelper != null) sqlHelper.close(); super.onTerminate(); // 整体摧毁的时候调用这个方法 } /** 初始化ImageLoader */ public static void initImageLoader(Context context) { String filePath = Environment.getExternalStorageDirectory() + "/Android/data/" + context.getPackageName() + "/cache/"; File cacheDir = StorageUtils.getOwnCacheDirectory(context, filePath);// 获取到缓存的目录地址 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 WeakMemoryCache()) // .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)// 超时时间 .writeDebugLogs() // Remove for release app .build(); // Initialize ImageLoader with configuration. ImageLoader.getInstance().init(config);// 全局初始化此配置 } }