startForeground() ne montre pas ma Notification
Je suis en train de faire mon Service
exécution en arrière plan. J'ai essayé d'utiliser cet exemple (reportez-vous à la section "de l'Exécution d'un Service de premier plan dans la"), mais startForeground()
n'est pas réellement le montrer à mon avis. Et aucune exception n'est levée. Pour faire ce qu'il indique, j'ai besoin d'utiliser NotificationManager
comme ici expliqué. Avec NotificationManager
ma notification fonctionne, mais je ne suis pas sûr que mon Service
est au premier plan après ce "silence" appel à startForeground()
.
Ce qui peut être mauvais?
MODIFIER: je viens de tester cet exemple de projet qui doit démontrer startForeground()
, mais il ne fonctionne pas! J'utilise l'API de v7.0, je l'ai testé à la fois sur l'émulateur et le réel de l'appareil (SE Xperia Neo). La Notification ne s'affiche pas.
EDIT2: si j'essaie d'appeler setForeground()
puis j'ai reçu un avertissement setForeground: ignoring old API call
.
J'ai aussi essayé d'utiliser startForegroundCompat()
comme décrit ici, mais l'effet est absolument la même. - Je vérifier si mon service est de premier plan à l'aide de ActivityManager.RunningServiceInfo
comme décrit ici, et je vois que mon service est pas de premier plan.
- Puisque vous avez choisi de ne pas fournir le code source, il sera difficile de vous aider directement. Voici un exemple de projet qui utilise
startForeground()
avec succès. - Je n'ai pas fournir le code source à cause de mon code est exactement le même que dans l'exemple que j'ai fourni: goo.gl/xXIvc . Merci pour l'exemple de projet.
- J'ai testé cet exemple de projet, il ne fonctionne pas! J'utilise l'API de v7.0, je l'ai testé à la fois sur l'émulateur et le réel de l'appareil (SE Xperia Neo). La Notification ne s'affiche pas.
- L'exemple de projet fonctionne parfaitement bien -- je viens de re-testé sur un Nexus One, Galaxy Nexus, Nexus S, HTC Desire S, et le "API v7.0" de l'émulateur. Pour démarrer le service et l'affichage de la
Notification
, appuyez sur la touche "Démarrer le Lecteur" bouton. - merci pour votre temps. Et, bien sûr, j'ai appuyé sur "Start the Player" bouton =). Très étrange, mais il ne fonctionne pas pour moi sur SE Xperia Neo et d'API et v7.0 émulateur. Demain, je vais le tester sur une sorte d'Acer, mais je pense que le problème est en quelque endroit différent, mais je n'ai absolument aucune idée de ce qui pourrait être mauvais.
Vous devez vous connecter pour publier un commentaire.
Je viens de remarquer que
startForeground()
ne pas afficher l'icône de notification, si leid
paramètre est réglé sur0
...J'espère que ça pourrait aider quelqu'un coincé sur cette.
en plus de la meilleure réponse.
vous devez également vérifier que vous avez appelé
setSmallIcon
.Sur mon téléphone android, je ne peux pas obtenir ce que j'attendais sans appel
setSmallIcon
DMitry. J'ai juste souffert de votre problème et trouvé la cause.
Si votre application est en train de changer l'état d'un COMPOSANT
PackageManager.setComponentEnabledSetting())
Android supprime le service de foregraound et son icône de notification.Bug signalé à Nov, 2011
Cela peut être un vieux thread, mais je tiens à ajouter que je viens d'apprendre ce qui n'est pas encore mentionné:
Il est possible qu'un
Service
est encore en vie aprèsstopSelf()
est appelé, car il y aActivity
qui ont lié à laService
. Comme une question de fait, lastartForeground()
est tout simplement pas va vous montrer la notification, ni donner aucune exception dans ce cas.Votre service est un service démarré ou une borne de service? J'ai eu le même problème avec une borne de service, mais à partir de la service avant la liaison, il m'a permis d'appeler
startForeground(int, notification)
et la notification montrer.dans mon cas, il n'y a pas de notification après
startForeground(...)
appeler parce que j'ai utilisé seulement.setSubText(...)
pour le réglage du message d' (car il est affiché avec une police plus petite sur la plupart des appareils). Mais certains appareils Xiaomi Redmi Note 4 ne vais pas vous montrer toute notification si Vous définissez pas de message à l'aide de.setContentText(...)
.Espère que cela va aider quelqu'un