working oreo notification not example create android service foreground

android - oreo - startForeground() no muestra mi notificación



push notifications android 8 (5)

DMitry. Acabo de sufrir tu problema y encontré la causa.

Si su aplicación está cambiando el estado de un COMPONENTE PackageManager.setComponentEnabledSetting()) Android elimina el servicio de foregraound y su ícono de notificación.

Error informado en noviembre de 2011

Estoy tratando de hacer que mi Service ejecute en primer plano. Intenté usar este ejemplo (busque la sección " Ejecución de un servicio en primer plano "), pero startForeground() no muestra mi notificación. Y no se arrojan excepciones. Para que se muestre, necesito usar NotificationManager como se explica aquí . Con NotificationManager mi notificación funciona, pero no estoy seguro de que mi Service esté en primer plano después de esta llamada "silenciosa" a startForeground() .

¿Qué puede estar mal?

EDITAR : ¡Acabo de probar este proyecto de muestra que debería demostrar startForeground() , pero no funciona! Utilizo la API v7.0, la probé tanto en el emulador como en el dispositivo real (SE Xperia Neo). La notificación no aparece.

EDIT2 : si trato de llamar a setForeground() entonces tengo un setForeground: ignoring old API call advertencia setForeground: ignoring old API call .

También traté de usar startForegroundCompat() como se describe aquí , pero el efecto es absolutamente el mismo. Compruebo si mi servicio está en primer plano utilizando ActivityManager.RunningServiceInfo como se describe aquí , y veo que mi servicio no está en primer plano.


Me acabo de dar cuenta de que startForeground() no muestra el icono de notificación si el parámetro id se establece en 0 ...

startForeground(0, notification); // Doesn''t work... startForeground(1, notification); // Works!!!

Espero que pueda ayudar a alguien a quedarse en esto.


además de la mejor respuesta. también debe verificar que ha llamado a setSmallIcon . En mi teléfono Android, no puedo obtener lo que esperaba sin llamar a setSmallIcon


Este podría ser un hilo viejo, pero me gustaría agregar lo que acabo de aprender y que aún no se menciona:

Es posible que un Service siga vivo después de stopSelf() porque hay Activity que se han vinculado al Service . Como cuestión de hecho, startForeground() simplemente no mostrará la notificación ni dará ninguna excepción en esta circunstancia.


¿Es su servicio un servicio iniciado o un servicio vinculado? Tuve el mismo problema con un servicio enlazado, pero iniciar el servicio antes de vincularlo me permitió llamar a startForeground(int, notification) y hacer que apareciera la notificación.