/** * This class allows you to listen to when the user is entering the background (i.e. after a home button press, * or opening recent apps etc) and when the user resumes the application from the background. * * @author John McDonnell */ public class BetterActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks { private int mForegroundActivities; private boolean mHasSeenFirstActivity; private boolean mChangingConfiguration; @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { mForegroundActivities++; if (mHasSeenFirstActivity && mForegroundActivities == 1 && !mChangingConfiguration) { applicationDidEnterForeground(activity); } mHasSeenFirstActivity = true; mChangingConfiguration = false; } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { mForegroundActivities--; if (mForegroundActivities == 0) { applicationDidEnterBackground(activity); } mChangingConfiguration = activity.isChangingConfigurations(); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } /** * One day we'll be as cool as iOS */ protected void applicationDidEnterForeground(Activity topActivity) { } protected void applicationDidEnterBackground(Activity lastActivity) { } }