android - 如何判断 Android 应用程序是否在前台运行?

标签 android android-activity

我正在我的 Android 应用程序中执行由 c2dm 触发的状态栏通知。如果应用程序正在运行,我不想显示通知。您如何确定应用程序是否正在运行并位于前台?

最佳答案

或者,您可以使用 ActivityManager 检查通过 getRunningTasks 方法运行的任务。然后检查返回的任务列表中的第一个任务(前台任务),如果它是你的任务。
下面是代码示例:

public Notification buildNotification(String arg0, Map<String, String> arg1) {

    ActivityManager activityManager = (ActivityManager) appContext.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> services = activityManager
            .getRunningTasks(Integer.MAX_VALUE);
    boolean isActivityFound = false;

    if (services.get(0).topActivity.getPackageName().toString()
            .equalsIgnoreCase(appContext.getPackageName().toString())) {
        isActivityFound = true;
    }

    if (isActivityFound) {
        return null;
    } else {
        // write your code to build a notification.
        // return the notification you built here
    }

}

不要忘记在 ma​​nifest.xml 文件中添加 GET_TASKS 权限,以便能够运行 getRunningTasks()上面代码中的方法:

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

p/s : 如果同意这种方式,请注意此权限现已弃用。

关于android - 如何判断 Android 应用程序是否在前台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19057573/

相关文章:

Android:Widget Config Activity 启动两次?

java - 确定上下文是否是特定 Activity

android - 如果应用程序在后台运行并且用户关闭设备并再次打开设备,应用程序将做什么?

android - 从 Android 与谷歌日历同步事件

存在 startActivityForResult 调用的 Android 程序流控制

java - 如何使用字符串中的类名启动新的 android Activity ?

android - 从另一个 Activity 回来后如何保持 Activity 中的值(value)

java - TimerTask 没有执行?

java - 如何等待后台进程在android中完成

android - 在 Android 的拦截器中执行另一个 API 调用是否有问题?