将多个活动绑定到一个音频播放器服务

时间:2012-10-19 06:25:10

标签: android binding service media-player

我有一个名为AudioService的服务,它扩展了android类服务。另外我在我的应用程序中有5个活动。如何仅将我的一个服务绑定到其中三个活动?

我感兴趣的是能够在用户查看这三项活动中的任何一项时运行该服务,但如果他们查看其他任何内容,则该服务将被关闭。

例如,如果用户单击某个按钮并进入这3个活动中的一个,则启动该服务。此时可以启动Mediaplayer对象。他们可以点击其他导航按钮或后退按钮,只要他们正在查看这3个活动中的一个,音乐就会不间断地播放。

1 个答案:

答案 0 :(得分:0)

使用共享原子变量与服务通信状态。这将允许它停止/开始播放音乐。

  1. 在服务上声明静态AtomicBoolean,以及可以设置/获取此布尔值的静态方法。这应该跟踪音乐是否已经播放。如果设置为true,则播放音乐。

  2. 当用户单击将其带到活动的按钮时,请使用该活动的onStart()方法检查此布尔值。如果它是假的,则音乐不播放。将其设置为true。将其设置为true的方法也应该开始播放音乐。

  3. 在其他2个活动的onStart()方法中,将AtomicBoolean的值设置为false。现在,服务上的方法应该将AtomicBoolean设置为false并释放媒体播放器。

  4. 后台服务本身可以继续运行。如果您想再次启动音乐,只需重建媒体播放器即可。