我有一个名为 AudioService 的服务,它扩展了 android 类服务。此外,我的应用程序中有 5 个活动。我如何才能将我的一项服务仅绑定到其中 3 项活动?
我感兴趣的是在用户查看这三个活动中的任何一个时运行服务的能力,但如果他们查看其他任何内容,则服务将关闭。
例如,如果用户单击一个按钮并进入这 3 个活动之一并启动服务。那时可以启动 Mediaplayer 对象。他们可以单击其他导航按钮或返回按钮,只要他们正在查看这 3 个活动之一,音乐就会不间断地播放。
我有一个名为 AudioService 的服务,它扩展了 android 类服务。此外,我的应用程序中有 5 个活动。我如何才能将我的一项服务仅绑定到其中 3 项活动?
我感兴趣的是在用户查看这三个活动中的任何一个时运行服务的能力,但如果他们查看其他任何内容,则服务将关闭。
例如,如果用户单击一个按钮并进入这 3 个活动之一并启动服务。那时可以启动 Mediaplayer 对象。他们可以单击其他导航按钮或返回按钮,只要他们正在查看这 3 个活动之一,音乐就会不间断地播放。
使用共享原子变量与服务通信状态。这将允许它停止/开始播放音乐。
在服务上声明一个静态 AtomicBoolean 和一个可以设置/获取该布尔值的静态方法。这应该跟踪音乐是否已经在播放。如果设置为 true,则正在播放音乐。
当用户单击将他们带到活动的按钮时,使用该活动的 onStart() 方法来检查此布尔值的值。如果它是假的,那么音乐就没有播放。将其设置为真。将其设置为 true 的方法也应该开始播放音乐。
在其他 2 个活动的 onStart() 方法上,将 AtomicBoolean 的值设置为 false。服务上的方法现在应该将 AtomicBoolean 设置为 false 并释放媒体播放器。
后台服务本身可以继续运行。当您想重新开始播放音乐时,只需重建媒体播放器。