84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
最近在做一个音乐播发器,我把播放音乐这个功能写在一个服务里,再和播放的界面进行绑定,注意是BindService而不是StartService。当我播放界面finish()后并且按理说服务也自动销毁了,但是音乐仍在播放,我用的是MediaPlayer类播放的音乐,不知道为什么,求大神告知。
学习是最好的投资!
finish前调用unBind了吗?
BindService只要还有一个activity与这个服务绑定在一起,就不会被销毁掉,必须等到所有activity都调用了unbound()才可能被销毁。
unbound()
Service的生命周期图
一个实战经验是,在activity的unBound()之前向Service发一条消息,告诉service这个activity要解绑了,这篇博文有一些源码和介绍Android BoundService 进程间通信
另外,Mediaplayer有没有在service 的onDestroy里调用release()。
只有当前播放界面与之绑定,而mediaplayer没有在service里release掉。但按道理来说既然我activity被finish掉了,所绑定的服务也被销毁了,那么服务里的mediaplayer也应该被销毁啊。
finish前调用unBind了吗?
BindService只要还有一个activity与这个服务绑定在一起,就不会被销毁掉,必须等到所有activity都调用了
unbound()
才可能被销毁。Service的生命周期图
一个实战经验是,在activity的unBound()之前向Service发一条消息,告诉service这个activity要解绑了,这篇博文有一些源码和介绍Android BoundService 进程间通信
另外,Mediaplayer有没有在service 的onDestroy里调用release()。
只有当前播放界面与之绑定,而mediaplayer没有在service里release掉。但按道理来说既然我activity被finish掉了,所绑定的服务也被销毁了,那么服务里的mediaplayer也应该被销毁啊。