package com.knight.arch;
import android.app.Application;
import com.facebook.stetho.Stetho;
import com.knight.arch.model.AccessTokenResponse;
import com.knight.arch.module.AppModule;
import com.knight.arch.module.Injector;
import com.orhanobut.logger.LogLevel;
import com.orhanobut.logger.Logger;
import com.umeng.analytics.MobclickAgent;
import java.util.Arrays;
import java.util.List;
import dagger.ObjectGraph;
/**
* @author andyiac
* @date 15-8-4
* @web http://blog.andyiac.com/
*/
public class ClientApplication extends Application implements Injector {
private static final String LOGGER_TAG = "<<=TAG=>>";
private AccessTokenResponse accessTokenResponse;
private ObjectGraph objectGraph;
public void onCreate() {
super.onCreate();
initStetho();
initLogger();
initDagger();
initUmeng();
}
private void initUmeng() {
MobclickAgent.openActivityDurationTrack(false);
}
private void initDagger() {
objectGraph = ObjectGraph.create(getModules().toArray());
objectGraph.inject(this);
}
private void initLogger() {
Logger.init(LOGGER_TAG) // default PRETTYLOGGER or use just init()
.setMethodCount(4) // default 2
.setLogLevel(LogLevel.FULL) // default LogLevel.FULL
.setMethodOffset(2); // default 0
//.hideThreadInfo() // default shown
}
private void initStetho() {
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build());
}
public List<Object> getModules() {
return Arrays.<Object>asList(new AppModule(this));
}
@Override
public void inject(Object target) {
this.objectGraph.inject(target);
}
@Override
public ObjectGraph plus(Object[] modules) {
return objectGraph.plus(modules);
}
public ObjectGraph plus(Injector injector) {
return this.objectGraph.plus(injector.getModules().toArray());
}
}