package com.rengwuxian.daggerdemo; import android.app.Activity; import android.app.Application; import android.os.Bundle; import com.rengwuxian.daggerdemo.model.Coder; import dagger.ObjectGraph; /** * Created by rengw_000 on 2014/6/29 0029. */ public class App extends Application implements Application.ActivityLifecycleCallbacks { int activityCount = 0; // 打开的Activity总数 ObjectGraph objectGraph; public <T> void inject(T target) { getObjectGraph().inject(target); } private ObjectGraph getObjectGraph() { if (objectGraph == null) { objectGraph = ObjectGraph.create(new AppModule()); } return objectGraph; } @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(this); } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { activityCount++; } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { activityCount--; if (activityCount == 0) { // 当一个Activity关闭并且activityCount为0时,表示Activity栈已空,那么重置ObjectGraph和Coder的数量 objectGraph = null; Coder.resetTotal(); } } }