1

在创建 android Auto media App MusicService 类时,会创建扩展 MediaBrowserService 的两个方法,其中两个方法会自动实现 onGetRoot 和 onLoadChildren。任何人都可以详细解释每件事是如何工作的。

4

2 回答 2

3

生命周期MediaBrowserService看起来像Service它扩展的简单生命周期。 从文档:

MediaBrowserService 的生命周期由它的创建方式、拥有的客户端数量以及它从媒体会话回调接收的调用控制。总结一下:

  • 该服务在响应媒体按钮启动或活动绑定到它时(通过其 MediaBrowser 连接后)创建。
  • 媒体会话 onPlay() 回调应包含调用 startService() 的代码。这可确保服务启动并继续运行,即使绑定到它的所有 UI MediaBrowser 活动都解除绑定。
  • onStop() 回调应该调用 stopSelf()。如果服务已启动,则会将其停止。此外,如果没有活动绑定到该服务,则该服务将被销毁。否则,服务将保持绑定,直到其所有活动都解除绑定。(如果在服务销毁之前收到后续的 startService() 调用,则取消挂起的停止。)

以下流程图演示了如何管理服务的生命周期。变量计数器跟踪绑定客户端的数量: 生命周期

onGetRootonLoadChildren用于管理客户端连接

但是要使用 MediaBrowserService 这还不够,所以你应该阅读这个文档(按照嵌套链接)。

于 2017-04-24T17:41:43.927 回答
2

取自MusicPlayer.java

此类通过服务提供 MediaBrowser。它通过 onGetRoot 和 onLoadChildren 方法向浏览客户端公开媒体库

onGetRoot(..):如果客户端包有权访问媒体信息,则返回根 id(如果不允许客户端,则返回 null)。资源

onLoadChildren:返回媒体项的子项列表。资源

要了解两者的实现,请检查MusicPlayer.java中的实现

于 2016-10-25T09:05:22.687 回答