Épingler la notification en haut de la zone de notification
J'ai une Notification de mise à jour (c'est à dire envoyé) toutes les trois secondes. J'ai réglé le FLAG_ONGOING_EVENT drapeau et la FLAG_NO_CLEAR drapeau alors qui est toujours montré. Le problème, c'est que si par exemple un téléchargement est actif (qui affiche une barre de progression dans la zone de notification) des deux notifications constamment changer de position, car ils sont actualisées toutes les quelques secondes.
Comment puis-je broches ma notification en haut de la liste (ou à une position statique), de sorte qu'il arrête de sauter partout à chaque fois que je le mettre à jour en appelant NotificationManager.notify()
?
Edit: Voici le code de mise à jour de la notification. Il est lancé à toutes les trois secondes.
Notification notification = new Notification();
notification.contentView = appBarNotification; //this sets the changed notification content
notification.flags |= Notification.FLAG_ONGOING_EVENT;
notification.flags |= Notification.FLAG_NO_CLEAR;
Intent notificationIntent = new Intent();
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent = contentIntent;
notification.icon = R.drawable.icon;
nm.notify(APP_BAR_NOTIFICATION, notification);
source d'informationauteur ubuntudroid
Vous devez vous connecter pour publier un commentaire.
Il y a une solution qui fait exactement ce que vous voulez.
Dans le Notification classe, il y a un champ appelé lorsque. Selon l'API:
Le comportement par défaut (pour le code et les codeurs confondus) est de donner quand le timestamp de la notification:
Donc - afin de maintenir le bon ordre de notifications, tout ce que vous devez faire est de lui donner un preset d'horodatage à la place:
Lorsque vous faites cela avec tous vos avis, qu'ils maintiennent leur commande. J'ai eu le même problème que vous et résolu de cette façon.
Vous ne devriez pas garder l'envoi de la notification. Utilisez simplement le cours des événements drapeau, comme vous avez déjà dans votre code. D'autres notifications peuvent venir obscurcir le vôtre, mais c'est juste la façon dont Android fonctionne.
Êtes-vous l'envoi d'une notification de nouveau à chaque fois, ou de la mise à jour d'un existant? Pouvez-vous poster le code?
En attendant, vous pouvez généralement répondre à des questions comme "puis-je broches ma notification d'une position statique, ou vers le haut de la liste" par la pensée "Attendez, qu'arriverait-il si deux ou plusieurs programmes à la fois essayé à la broche de leur notification pour être le premier?" et de réaliser que la course aux armements qui s'ensuivrait parmi les programmes qu'ils tentent de plus en plus dur pour s'assurer de leur notification est le premier est pourquoi ce genre de fonctionnalité n'est pas prise en charge.
Il a été un certain temps depuis que j'ai fait le code pour Android, mais si je me souviens bien, chaque fois que vous appelez
NotificationManager.notify()
c'est parce que vous voulez alerte l'utilisateur par le fait d'avoir une icône de flash ou le déplacer. Cependant, il y a des manières de modifier le réel les notifications que vous envoyez.Vous pouvez également appeler
.cancel()
sur elle si cela aide.Voici le Android documentation de l'API pour les aider, même si vous l'avez probablement déjà vu:
Notification
NotificationManager
Espère que contribué à!
Il existe un Indicateur d'Événement.
http://developer.android.com/reference/android/app/Notification.html#FLAG_ONGOING_EVENT
Vous n'avez pas besoin de la Notification.FLAG_NO_CLEAR drapeau.
Vous dire que votre notification affiche une liste des applications en cours d'utilisation. Pourquoi avez-vous renvoyer la notification toutes les 3 secondes? Pourquoi ne pas renvoyer la notification uniquement lorsque la liste des applications a changé. Ce n'est pas directement de résoudre votre problème, mais il réduit considérablement.
Par l'ajout d' .setSortKey(Chaîne de caractères) à votre notification builder vous pouvez avoir vos notifications séjour dans un souci constant de lexicographiques/ordre alphabétique.
Juste une remarque pour les autres personnes qui s'exécutent sur cette question -
Vaiden de répondre à ma question où mon de notification en cours sautait. Il n'est arrivé à notre application sur ICS 4.0.3 pour une raison quelconque, je pense que c'est dû au fait que ICS gère les notifications différemment de l'ancienne version. Aussi remarque - sur les tablettes, il n'y a pas de "Cours" vs normale de notification des sections comme sur les anciennes versions (pain d'épice). L'ordre est maintenu si, juste pas dans la catégorie. Vous ne savez pas si elle s'applique aux téléphones sur ICS.