Lié service de crash avec “Contexte.startForegroundService() n'a pas alors d'appel de Service.startForeground()” erreur

Je suis actuellement en train de travailler sur la lecture audio app et je suis à l'aide d'un a commencé lié service à jouer de la musique en arrière-plan. Je commence et se lient au service à l'aide de code suivant.

val intent = Intent(context, MusicService::class.java)
context.startService(intent)
context.bindService(intent, serviceConnection, 0)

Il sera promu au premier plan lors de la lecture et obtient rétrogradé lorsque la musique est en pause.

//onAudioPlay
service.startForeground(NOTIFY_ID, notification)

//onAudioPause
service.stopForeground(false)

Service fonctionne bien jusqu'à maintenant. Mais lorsque la notification est lue(supprimé) par l'utilisateur dans l'état de pause, le service tombe en panne après quelques secondes de donner à cette erreur.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myplayer, PID: 4380
    android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
        android.app.ActivityThread$H.handleMessage(ActivityThread.java:1775)
        android.os.Handler.dispatchMessage(Handler.java:105)
        android.os.Looper.loop(Looper.java:164)
        android.app.ActivityThread.main(ActivityThread.java:6541)
        java.lang.reflect.Method.invoke(Native Method)
      com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Cela se produit uniquement sur les biscuits Oreo et j'ai déjà lu sur le fond de limitations dans la de biscuits Oreo. Mais les points suivants qui me dérange.

  • Ce service est lié service(qui ne sont pas touchés par les limitations)
  • Je n'ai jamais utiliser le Contexte.startForegroundService() pour démarrer le service.(et ne veulent pas l'utiliser)
  • Le service ne plante pas quand il fait rétrogradé de premier plan, qui se passe lors du retrait de la notification.

Pourquoi le service est de s'écraser? Ce que je fais mal? Je suis très reconnaissant si quelqu'un me dire ce qui se passe ici.

Ce qui est intéressant. Je vous suggère de poster votre solution comme une réponse et le marquer comme acceptées au lieu de modifier la question. C'est plus clair pour le futur lecteur.
Merci pour la suggestion. J'ai ajouté une réponse.

OriginalL'auteur UdeshUK | 2017-12-02