package com.bczm.widgetcollections;
import android.app.Application;
import android.os.Handler;
import android.os.Looper;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import com.bczm.widgetcollections.http.HttpUtil;
import com.bczm.widgetcollections.utils.FileUtils;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LRULimitedMemoryCache;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import java.io.File;
/**
* @author Jorge on 2015/8/26 17:52
*/
public class BaseApplication extends Application{
/** 全局Context,原理是因为Application类是应用最先运行的,所以在我们的代码调用时,该值已经被赋值过了 */
private static BaseApplication mInstance;
/** 主线程ID */
private static int mMainThreadId = -1;
/** 主线程ID */
private static Thread mMainThread;
/** 主线程Handler */
private static Handler mMainThreadHandler;
/** 主线程Looper */
private static Looper mMainLooper;
@Override
public void onCreate() {
mMainThreadId = android.os.Process.myTid();
mMainThread = Thread.currentThread();
mMainThreadHandler = new Handler();
mMainLooper = getMainLooper();
mInstance = this;
super.onCreate();
HttpUtil.init(this);
initImageLoader();
}
public static BaseApplication getApplication() {
return mInstance;
}
/** 获取主线程ID */
public static int getMainThreadId() {
return mMainThreadId;
}
/** 获取主线程 */
public static Thread getMainThread() {
return mMainThread;
}
/** 获取主线程的handler */
public static Handler getMainThreadHandler() {
return mMainThreadHandler;
}
/** 获取主线程的looper */
public static Looper getMainThreadLooper() {
return mMainLooper;
}
public void initImageLoader(){
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(mInstance)
.threadPriority(Thread.NORM_PRIORITY + 2)
.denyCacheImageMultipleSizesInMemory()
.threadPoolSize(10)
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.diskCache(new UnlimitedDiskCache(new File(FileUtils.getIconDir())))
.memoryCache(new LRULimitedMemoryCache(2*1024*1024))
.build();
ImageLoader.getInstance().init(config);
}
public void exitApp() {
System.gc();
android.os.Process.killProcess(android.os.Process.myPid());
}
}