我有我的應用程序從服務器接收GCM消息。我掌握了通知即將開始的所有工作。應用程序打開或背景(顯示通知與否)
我的問題是,如果應用程序是開放的,那麼我不想顯示通知,只是顯示顯示消息與應用程序。但如果應用程序已關閉,則需要顯示通知(如聊天應用程序)。
我該如何做這個決定?
謝謝
我有我的應用程序從服務器接收GCM消息。我掌握了通知即將開始的所有工作。應用程序打開或背景(顯示通知與否)
我的問題是,如果應用程序是開放的,那麼我不想顯示通知,只是顯示顯示消息與應用程序。但如果應用程序已關閉,則需要顯示通知(如聊天應用程序)。
我該如何做這個決定?
謝謝
你可以檢查應用程序是否在後臺或不試試這個。
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;
}
可以爲活動生命週期事件的監聽器添加到您的應用程序對象。
看到這裏 Android event listener for app lifecycle
Checking if an Android application is running in the background
沒有辦法確定它除了手動 - 地方創造一些標誌和跟蹤應用的活動的生命週期,以檢查是否有任何活動是在前臺。 –