在创建 android Auto media App MusicService 类时,会创建扩展 MediaBrowserService 的两个方法,其中两个方法会自动实现 onGetRoot 和 onLoadChildren。任何人都可以详细解释每件事是如何工作的。
问问题
1225 次
2 回答
3
生命周期MediaBrowserService
看起来像Service
它扩展的简单生命周期。
从文档:
MediaBrowserService 的生命周期由它的创建方式、拥有的客户端数量以及它从媒体会话回调接收的调用控制。总结一下:
- 该服务在响应媒体按钮启动或活动绑定到它时(通过其 MediaBrowser 连接后)创建。
- 媒体会话 onPlay() 回调应包含调用 startService() 的代码。这可确保服务启动并继续运行,即使绑定到它的所有 UI MediaBrowser 活动都解除绑定。
- onStop() 回调应该调用 stopSelf()。如果服务已启动,则会将其停止。此外,如果没有活动绑定到该服务,则该服务将被销毁。否则,服务将保持绑定,直到其所有活动都解除绑定。(如果在服务销毁之前收到后续的 startService() 调用,则取消挂起的停止。)
onGetRoot
并onLoadChildren
用于管理客户端连接。
但是要使用 MediaBrowserService 这还不够,所以你应该阅读这个文档(按照嵌套链接)。
于 2017-04-24T17:41:43.927 回答
2
此类通过服务提供 MediaBrowser。它通过 onGetRoot 和 onLoadChildren 方法向浏览客户端公开媒体库
onGetRoot(..):如果客户端包有权访问媒体信息,则返回根 id(如果不允许客户端,则返回 null)。资源
onLoadChildren:返回媒体项的子项列表。资源
要了解两者的实现,请检查MusicPlayer.java中的实现
于 2016-10-25T09:05:22.687 回答