package com.moez.QKSMS.common; import android.app.Activity; import android.app.Application; import android.os.Bundle; import android.util.Log; /** * http://stackoverflow.com/questions/3667022/checking-if-an-android-application-is-running-in-the-background/ */ public class LifecycleHandler implements Application.ActivityLifecycleCallbacks { private final String TAG = "LifecycleHandler"; private static int sResumed; private static int sPaused; private static int sStarted; private static int sStopped; private static int sActivityCounter; @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { sActivityCounter++; } @Override public void onActivityDestroyed(Activity activity) { sActivityCounter--; if (isNoActivitiesAlive()) { DonationManager.clearInstance(); } } @Override public void onActivityResumed(Activity activity) { sResumed++; } @Override public void onActivityPaused(Activity activity) { sPaused++; Log.i("test", "application is in foreground: " + (sResumed > sPaused)); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityStarted(Activity activity) { sStarted++; } @Override public void onActivityStopped(Activity activity) { sStopped++; Log.i("test", "application is visible: " + (sStarted > sStopped)); } public static boolean isApplicationVisible() { return sStarted > sStopped; } public static boolean isApplicationInForeground() { return sResumed > sPaused; } public static boolean isNoActivitiesAlive() { return sActivityCounter <= 0; } }