我正在尝试编写一个允许用户收听广播电台的Android应用程序。
我有启动和停止按钮工作,它播放流。如果我按下主页并开始使用手机进行其他零碎,则流继续播放。这就是我希望它发挥作用的方式。
我是否应该打扰创建服务来播放流,或者我已经使用的方法已经足够好了?在服务中带来什么好处?很多在线教程和示例似乎都使用了服务,但在我看来,它只是在代码中添加了额外的复杂功能。还是更有效率?
此致 大卫
答案 0 :(得分:2)
您不需要使用服务,但您的用户可能会在正常使用情况下发现播放意外停止,这取决于正常使用情况,因此服务是最好的方法。
原因是您的流对象/媒体播放器当前附加的活动的生命周期。
在某些时候,系统将完全释放活动,因为用户不再可见,并且一旦GC发生回放将停止。这将取决于内存压力以及用户采取的其他操作,例如启动其他应用程序。服务允许更长的寿命,通常它们只有在所有其他后台活动被释放后但在前台活动之前才会被释放。有关服务的流程生命周期规则的更完整说明,请参阅Android文档here.
您可能还想查看PowerManager和PARTIAL_WAKE_LOCK的使用,这样可以在手机正常睡眠时(以电池续航时间为代价)继续播放。