Cómo volver a vincular al service de reproductor de música bind ya en ejecución

Así que solo hago una aplicación para reproductor de música y un service que es responsable de la class mediaplayer

Cuando abro el fragment en la actividad principal y reproduzco música desde él, se llama al service, hago una notificación y corro en segundo plano … El código que utilizo para llamar al service es

val auroraServiceConnection = object : ServiceConnection { override fun onServiceConnected(className: ComponentName, service: IBinder) { // We've bound to LocalService, cast the IBinder and get LocalService instance val binder = service as AuroraService.LocalBinder mAuroraService = binder.service mBound = true } override fun onServiceDisconnected(arg0: ComponentName) { mBound = false } } fun play(id: Int){ // Called when play and changing music Log.v("aurora_l bound", mBound.toString()) if(!mBound){ val intent = Intent(activity, AuroraService::class.java) intent.action = AuroraService.ServiceAction.PLAY.value intent.putExtra("music_id", id) activity.startService(intent) activity.bindService(intent, auroraServiceConnection, Context.BIND_AUTO_CREATE) mBound = true } else { mAuroraService.changeMusic(Const.musicUtils.musicById(id)) } update(AuroraService.PlaybackStatus.PLAYING, Const.musicUtils.musicById(id)) mListener!!.onMusicStateChanged(AuroraService.PlaybackStatus.PLAYING) } 

El problema es que cuando cierro la actividad (el service todavía se está ejecutando y reproduciendo música) y la vuelvo a abrir, y luego reproduzco una música, en lugar de usar el service anterior, creó un nuevo service y reproduce la nueva canción … Entonces, hay dos services tocando dos canciones diferentes al mismo time

Pero quiero que haya un solo service, que se reutilice


Algunos datos adicionales

Mi carpeta de service

 class LocalBinder : Binder() { internal// Return this instance of LocalService so clients can call public methods val service: AuroraService get() = this@AuroraService } 

método onBind de mi service

 override fun onBind(intent: Intent?): IBinder { initMediaSession() // Init media sessions class for notification iInitMediaPlayer() // Init mediaplayer callback if (intent != null) { iReceiveAction(intent) } return mBinder } fun iReceiveAction(intent: Intent){ val mAction = ServiceAction.values().lastOrNull { intent.action == it.value } ?: ServiceAction.NONE when (mAction){ ServiceAction.PLAY -> { val musicId = intent.getIntExtra("music_id", -1) music = Const.musicUtils.musicById(musicId) musicInPlaylist = musicId playlist = ArrayList() plauMusic() } else -> { Log.v("aurora_", "?!") } } } 

Solutions Collecting From Web of "Cómo volver a vincular al service de reproductor de música bind ya en ejecución"