package com.cheikh.lazywaimai.context; import android.app.Application; import com.orhanobut.logger.LogLevel; import com.orhanobut.logger.Logger; import com.squareup.leakcanary.LeakCanary; import com.squareup.leakcanary.RefWatcher; import com.tencent.bugly.crashreport.CrashReport; import java.io.File; import javax.inject.Inject; import dagger.ObjectGraph; import com.cheikh.lazywaimai.module.ApplicationModule; import com.cheikh.lazywaimai.module.library.ContextProvider; import com.cheikh.lazywaimai.module.library.InjectorModule; import com.cheikh.lazywaimai.module.qualifiers.ShareDirectory; import com.cheikh.lazywaimai.network.GsonHelper; import com.cheikh.lazywaimai.controller.MainController; import com.cheikh.lazywaimai.util.Injector; import com.cheikh.lazywaimai.util.PreferenceUtil; import com.cheikh.lazywaimai.util.ToastUtil; public class AppContext extends Application implements Injector { private static AppContext mInstance; private ObjectGraph mObjectGraph; private RefWatcher mRefWatcher; @Inject MainController mMainController; @Inject @ShareDirectory File mShareLocation; public static AppContext getContext() { return mInstance; } public RefWatcher getRefWatcher() { return mRefWatcher; } public MainController getMainController() { return mMainController; } @Override public void onCreate() { super.onCreate(); mInstance = this; // 吐司初始化 ToastUtil.init(this); // 本地存储工具类初始化 PreferenceUtil.init(this, GsonHelper.builderGson()); // 日志打印器初始化 Logger.init(getPackageName()).setLogLevel(AppConfig.DEBUG ? LogLevel.FULL : LogLevel.NONE); // bugly初始化 CrashReport.initCrashReport(this, "1a859a4b54", false); // LeakCanary mRefWatcher = LeakCanary.install(this); // 依赖注解初始化 mObjectGraph = ObjectGraph.create( new ApplicationModule(), new ContextProvider(this), new InjectorModule(this) ); mObjectGraph.inject(this); } @Override public void inject(Object object) { mObjectGraph.inject(object); } }