应用程序打开或后台(显示通知与否)

时间:2017-06-12 06:40:19

标签: android

我的应用程序从服务器接收GCM消息。我得到了所有正在处理通知的工作。

我的问题是,如果该应用是开放的,那么我不想显示通知,只是显示带有应用的消息。但如果应用程序已关闭,那么我需要显示通知(如聊天应用程序)。

我该如何做出这个决定?

由于

2 个答案:

答案 0 :(得分:0)

您可以检查应用是否在后台尝试此操作。

 public static boolean isAppIsInBackground(Context context) {
    boolean isInBackground = true;
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
        List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
            if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                for (String activeProcess : processInfo.pkgList) {
                    if (activeProcess.equals(context.getPackageName())) {
                        isInBackground = false;
                    }
                }
            }
        }
    } else {
        List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
        ComponentName componentInfo = taskInfo.get(0).topActivity;
        if (componentInfo.getPackageName().equals(context.getPackageName())) {
            isInBackground = false;
        }
    }

    return isInBackground;
}

答案 1 :(得分:0)

您可以将Activity生命周期事件的侦听器添加到Application对象。

见这里 Android event listener for app lifecycle

Checking if an Android application is running in the background