最近在做一个音乐播发器,我把播放音乐这个功能写在一个服务里,再和播放的界面进行绑定,注意是BindService而不是StartService。当我播放界面finish()后并且按理说服务也自动销毁了,但是音乐仍在播放,我用的是MediaPlayer类播放的音乐,不知道为什么,求大神告知。
伊谢尔伦2017-04-17 17:38:33
BindService只要還有一個activity與這個服務綁定在一起,就不會被銷毀掉,必須等到所有activity都呼叫了unbound()
才可能被銷毀。
Service的生命週期圖
一個實戰經驗是,在activity的unBound()之前向Service發一條訊息,告訴service這個activity要解開了,這篇博文有一些源碼和介紹Android BoundService 進程間通信
另外,Mediaplayer有沒有在service 的onDestroy裡呼叫release()。
高洛峰2017-04-17 17:38:33
只有目前播放介面與之綁定,而mediaplayer沒有在service裡release掉。但照道理來說既然我activity被finish掉了,所綁定的服務也被銷毀了,那麼服務裡的mediaplayer也應該被銷毀啊。