Alterar comportamento do Push Notification de acordo com status da Activity

Boa tarde a todos,

Preciso de alterar o comportamento do Push Notification do meu app da seguinte forma:

  • Se o app estiver em primeiro plano (Foreground), irá ocorrer a atualização de uma lista e não irá aparecer a notificação na barra de status.
  • Se o app estiver em segundo plano (Background) ou fechado, a notificação irá aparecer.

Semelhante ao app do Gmail.

Procurei e achei essas formas:

1º:

[code]ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List services = activityManager.getRunningTasks(Integer.MAX_VALUE);
boolean isActivityFound = false;

        if (services.get(0).topActivity.getPackageName().toString().equalsIgnoreCase(getPackageName().toString()))
        {
            isActivityFound = true;
        }
        if (!isActivityFound)
        {
            NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle("xxxx")
        .setStyle(new NotificationCompat.BigTextStyle()
                .bigText("Update List"))
        .setContentText("Update List").setAutoCancel(true).setDefaults(Notification.DEFAULT_ALL).setWhen(System.currentTimeMillis());
        builder.setContentIntent(listPendingIntent);
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(NOTIFICATION_ID, builder.build());
        }  [/code]

2º: http://markhudnall.com/2013/11/13/gcm-foreground-and-background/

Existe alguma outra forma de fazer isso? Ou alguma dessas soluções é a que normalmente se utiliza?