import android.app.Activity; import android.app.Application; import android.os.Bundle; import com.google.analytics.tracking.android.EasyTracker; public class MainApplication extends Application { private boolean locationNeedsUpdated = true; private int createdActivityInstanceCount = 0; @Override public void onCreate() { super.onCreate(); appBackgroundedDetector(); } private void appBackgroundedDetector() { registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle bundle) { createdActivityInstanceCount++; } @Override public void onActivityStarted(Activity activity) { //EasyTracker.getInstance(MainApplication.this).activityStart(activity); } @Override public void onActivityResumed(Activity activity) { if (locationNeedsUpdated && (createdActivityInstanceCount == 0)) { // TODO update location locationNeedsUpdated = false; } } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { EasyTracker.getInstance(MainApplication.this).activityStop(activity); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { } @Override public void onActivityDestroyed(Activity activity) { createdActivityInstanceCount--; if (createdActivityInstanceCount <= 0) { createdActivityInstanceCount = 0; locationNeedsUpdated = true; } } }); } }