web-dev-qa-db-fra.com

Méthode correcte pour créer des canaux de notification à partir d'Android O Api

Les canaux de notification introduits à partir de la version Android O (API 26). Je peux en apprendre davantage à partir des liens suivants:

Des questions: 

  1. Si j'ai plusieurs numéros de notification, est-ce une bonne idée de créer des canaux de notification lorsque l'application démarre et de la conserver à ApplicationScope?

    public void addNotificationChannels(Context context) {
    
        List<NotificationChannel> channels = new ArrayList<>();
        channels.add("channel_1");
        channels.add("channel_2");
        .
        .
        channels.add("channel_7");
    
        NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannels(channels);
    
    }
    
  2. Que se passera-t-il si j'essaie d'exécuter cette ligne new Notification.Builder(getApplicationContext(), PRIMARY_CHANNEL) avant d'ajouter des canaux au gestionnaire de notifications

6
sam_k
  1. Idéalement, vous devriez créer un canal tout en y notifiant une notification . Il est prudent d'appeler createNotificationChannel avec le même identifiant que celui utilisé Auparavant, il ne sera pas recréé.
  2. Votre application ne publiera pas cette notification. Le système peut afficher un avertissement indiquant que votre application n'est pas autorisée à publier cette notification.
6
Arnav M.

Ce que je fais, c'est d'étendre la classe d'application ((n'oubliez pas de mettre à jour le manifeste de l'application avec le nom de la classe) et de créer les canaux de notification une fois dans la méthode onCreate. Cela garantit que les canaux de notification sont toujours créés lors de la création d'une notification.

IMHO c'est un gaspillage de cycles du processeur pour (essayer de) créer, encore et encore, les canaux de notification pour chaque notification.

Remarque: je note toujours la version de l'application de cette façon aussi, ce qui est très utile lorsque quelqu'un envoie un logcat.

4
M66B

Je pense qu'il y a deux manières sensées:
1. Créer tous les canaux dans la sous-classe Application,
2. Créez tous les canaux de votre activité principale, en commençant par l'application. 

0
Matt