搜尋

首頁  >  問答  >  主體

java - Android 有关于后台播放音乐的问题

最近在做一个音乐播发器,我把播放音乐这个功能写在一个服务里,再和播放的界面进行绑定,注意是BindService而不是StartService。当我播放界面finish()后并且按理说服务也自动销毁了,但是音乐仍在播放,我用的是MediaPlayer类播放的音乐,不知道为什么,求大神告知。

PHPzPHPz2887 天前458

全部回覆(3)我來回復

  • PHPz

    PHPz2017-04-17 17:38:33

    finish前調用unBind了嗎?

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:38:33

    BindService只要還有一個activity與這個服務綁定在一起,就不會被銷毀掉,必須等到所有activity都呼叫了unbound()才可能被銷毀。


    Service的生命週期圖

    一個實戰經驗是,在activity的unBound()之前向Service發一條訊息,告訴service這個activity要解開了,這篇博文有一些源碼和介紹Android BoundService 進程間通信

    另外,Mediaplayer有沒有在service 的onDestroy裡呼叫release()。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 17:38:33

    只有目前播放介面與之綁定,而mediaplayer沒有在service裡release掉。但照道理來說既然我activity被finish掉了,所綁定的服務也被銷毀了,那麼服務裡的mediaplayer也應該被銷毀啊。

    回覆
    0
  • 取消回覆