【问题标题】:App open or background (to show notification or not)应用程序打开或后台(显示或不显示通知)
【发布时间】:2017-06-12 06:40:19
【问题描述】:

我的应用从服务器接收 GCM 消息。我已经完成了所有工作,并收到了通知。

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

我该如何确定?

谢谢

【问题讨论】:

  • 除了手动之外无法确定它 - 在某处创建一些标志,并跟踪应用程序的活动生命周期以检查是否有任何活动在前台。

标签: android


【解决方案1】:

你可以检查应用程序是否在后台,或者不试试这个。

 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;
}

【讨论】:

    【解决方案2】:

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

    看这里 Android event listener for app lifecycle

    Checking if an Android application is running in the background

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多