我的服务有问题 .
在方法onCreate我正在创建媒体播放器 . 当我在活动之间移动时,我能够顺利地访问服务并保持相同的媒体播放器实例 . 虽然,当我离开应用程序(来自服务媒体播放器的音频仍在播放)然后我返回应用程序 - 我得到新的MediaPlayer实例 . 来自前一个实例的音频流仍在播放 .
我希望能够访问同一个MediaPlayer实例,以便操作播放歌曲(例如暂停) .
你知道可能是什么问题吗?
class PlayerService : Service(), MediaPlayer.OnPreparedListener, PlayerServiceContract.ServiceContract {
private val mBinder = PlayerBinder()
private var mPlayer: MediaPlayer? = null
private var mPresenter: PlayerServiceContract.Presenter? = null
private var mRecording: Recording? = null
override fun onCreate() {
super.onCreate()
mPlayer = MediaPlayer()
mPlayer?.setWakeMode(applicationContext,
PowerManager.PARTIAL_WAKE_LOCK)
mPlayer?.setAudioStreamType(AudioManager.STREAM_MUSIC)
mPlayer?.setOnPreparedListener(this)
1 回答
如果服务的所有绑定都未绑定,则将关闭绑定服务 .
如果通过调用
stopSelf()
或stopService()
关闭服务,将关闭由startService()
启动的服务 .如果AND stopSelf()或
stopService()
,则将销毁由startService()
和bindService()
调用的服务 .在您的情况下,当活动消失时,服务似乎进入未绑定状态并可能被销毁 .
也许你在开始播放时必须在同一服务中调用
startService()
,并在停止播放时调用stopSelf()
,以便在播放媒体时不能销毁该服务 .注意:有人说你必须在取消绑定之后调用
stopSelf()
. 有人说停止和解除绑定的顺序无关紧要 . 我不知道哪个是正确的 .