扫码关注官方订阅号
最近在做一个音乐播发器,我把播放音乐这个功能写在一个服务里,再和播放的界面进行绑定,注意是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也应该被销毁啊。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
finish前调用unBind了吗?
BindService只要还有一个activity与这个服务绑定在一起,就不会被销毁掉,必须等到所有activity都调用了
unbound()才可能被销毁。Service的生命周期图
一个实战经验是,在activity的unBound()之前向Service发一条消息,告诉service这个activity要解绑了,这篇博文有一些源码和介绍Android BoundService 进程间通信
另外,Mediaplayer有没有在service 的onDestroy里调用release()。
只有当前播放界面与之绑定,而mediaplayer没有在service里release掉。但按道理来说既然我activity被finish掉了,所绑定的服务也被销毁了,那么服务里的mediaplayer也应该被销毁啊。