Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save ochim/3fa144b9d2255cb5784c202fa3258a62 to your computer and use it in GitHub Desktop.

Select an option

Save ochim/3fa144b9d2255cb5784c202fa3258a62 to your computer and use it in GitHub Desktop.
Best way to know if your Android app is currently in foreground

First

deprecated

public static boolean isApplicationInForeground(final Context context) {
    final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    final List<RunningTaskInfo> tasks = activityManager.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        final ComponentName topActivity = tasks.get(0).topActivity;
        if (topActivity.getPackageName().equals(context.getPackageName())) {
            return true;
        }
    }
    return false;
}

<uses-permission android:name="android.permission.GET_TASKS"/>

Second

public static boolean isApplicationInForeground(final Context context) {
    final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    final List<ActivityManager.RunningAppProcessInfo> runningProcesses = activityManager.getRunningAppProcesses();
    for (final ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
        if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
            for (final String activeProcess : processInfo.pkgList) {
                if (activeProcess.equals(context.getPackageName())) {
                    return true;
                }
            }
        }
    }
    return false;
}

Final

...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment