package com.xinxin.everyxday; import android.app.ActivityManager; import android.app.Application; import android.content.Context; import android.os.*; import android.util.Log; 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.xiaomi.channel.commonutils.logger.LoggerInterface; import com.xiaomi.mipush.sdk.Logger; import com.xiaomi.mipush.sdk.MiPushClient; import com.xinxin.everyxday.dao.newdao.DaoMaster; import com.xinxin.everyxday.dao.newdao.DaoSession; import com.xinxin.everyxday.global.Globe; import com.xinxin.everyxday.util.LocalStorageUtil; import com.xinxin.everyxday.util.ProjectSettingInfoPreUtil; import java.io.File; import java.util.List; import uk.co.chrisjenx.calligraphy.CalligraphyConfig; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; public class EveryXDayApplication extends Application{ private static EveryXDayApplication instance; private static DaoMaster daoMaster; private static DaoSession daoSession; private LocalStorageUtil mLocalStorageUtil; public LocalStorageUtil getLocalStorageUtil() { return mLocalStorageUtil; } public static EveryXDayApplication getInstance() { if (instance == null) { instance = new EveryXDayApplication(); } return instance; } @Override public void onCreate() { super.onCreate(); if(instance == null) { instance = this; } CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/FZLanTingHeiS-L-GB-Regular.TTF") .setFontAttrId(R.attr.fontPath) .build() ); //存储application刚启动状态 ProjectSettingInfoPreUtil psip = ProjectSettingInfoPreUtil.getInstance(); psip.addSpApplicationIsFirstStart(true); mLocalStorageUtil = new LocalStorageUtil(); mLocalStorageUtil.initLocalDir(this); initImageLoader(getApplicationContext()); startXiaoMiPush(); } /** * 取得DaoMaster * * @param context * @return */ public static DaoMaster getDaoMaster(Context context) { if (daoMaster == null) { DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(context, Globe.DB_NAME, null); daoMaster = new DaoMaster(helper.getWritableDatabase()); } return daoMaster; } /** * 取得DaoSession * * @param context * @return */ public static DaoSession getDaoSession(Context context) { if (daoSession == null) { if (daoMaster == null) { daoMaster = getDaoMaster(context); } daoSession = daoMaster.newSession(); } return daoSession; } public void initImageLoader(Context context) { File cacheDir = new File(mLocalStorageUtil.getImageCacheAbsoluteDir()); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .diskCacheFileNameGenerator(new Md5FileNameGenerator()) .tasksProcessingOrder(QueueProcessingType.LIFO) .diskCache(new UnlimitedDiscCache(cacheDir)) // .writeDebugLogs() // Remove for release app .build(); ImageLoader.getInstance().init(config); } // 小米推送APPID private static final String APP_ID = "2882303761517314666"; // 小米推送APPKEY private static final String APP_KEY = "5561731444666"; // 此TAG在adb logcat中检索自己所需要的信息, 只需在命令行终端输入 adb logcat | grep private static final String TAG = "com.xinxin.everyxday"; private void startXiaoMiPush(){ LoggerInterface newLogger = new LoggerInterface() { @Override public void setTag(String tag) { // ignore } @Override public void log(String content, Throwable t) { Log.d(TAG, content, t); } @Override public void log(String content) { Log.d(TAG, content); } }; Logger.setLogger(this, newLogger); if (shouldInit()) { MiPushClient.registerPush(this, APP_ID, APP_KEY); } } private boolean shouldInit() { ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)); List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses(); String mainProcessName = getPackageName(); int myPid = android.os.Process.myPid(); for (ActivityManager.RunningAppProcessInfo info : processInfos) { if (info.pid == myPid && mainProcessName.equals(info.processName)) { return true; } } return false; } }