StartForeground () no muestra mi notificación

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

¿Qué puede estar mal?

EDIT : Acabo de probar este proyecto de muestra que debe demostrar startForeground() , pero no funciona! Yo uso API v7.0, lo probé tanto en emulador y dispositivo real (SE Xperia Neo). La notificación no aparece.

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

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

Acabo de notar que startForeground() no muestra el icono de notificación si el parámetro id está establecido en 0

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

Espero que eso pueda ayudar a alguien que esté atascado en esto.

Además de la mejor respuesta. Usted también debe comprobar que usted ha llamado setSmallIcon . En mi teléfono Android, no puedo conseguir lo que esperaba sin llamar a setSmallIcon

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

Si su aplicación cambia el estado de un COMPONENTE PackageManager.setComponentEnabledSetting()) Android elimina el servicio de foregraound y su icono de notificación.

Bug informó en Nov, 2011

Esto podría ser un hilo antiguo, pero me gustaría añadir lo que acabo de aprender que no se menciona todavía:

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

¿Su servicio es un servicio iniciado o un servicio enlazado? Tuve el mismo problema con un servicio enlazado, pero al iniciar el servicio antes de enlazar me permitió llamar a startForeground(int, notification) y hacer que se mostrara la notificación.

  • Cómo mostrar texto marathi en Android procedente de webservice
  • ¿Posible inflar una disposición de XML en un servicio? (Androide)
  • ¿Cómo enviar notificaciones a la aplicación de Android desde el servidor de Java mediante GCM?
  • ¿Cómo acceder a un contexto de aplicación ya en ejecución desde un servicio de adaptador de sincronización en Android?
  • Cómo convertir HttpEntity en JSON?
  • Llamar al servicio web WSDL mediante el uso de retrofit android
  • Consumir servicio REST Web y analizar datos XML en Android
  • ¿Cómo maneja un servidor las solicitudes de servicio web de varios clientes?
  • Cómo saber cuándo finaliza una llamada de Retrofit
  • Conexión a un servicio web desde android - AsyncTask o Service?
  • ¿Por qué utilizar sqlite Database en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.