Android自动服务_INTERFACE媒体浏览器服务兼容性



我正在开发一个android auto,但我在Service:的Onbind方法中的这部分代码中遇到了一些问题

public IBinder onBind(Intent arg0) {
Log.i("TAG", "OnBind");
// TODO Auto-generated method stub
if (SERVICE_INTERFACE.equals(arg0.getAction())) {
Log.i("TAG", "SERVICE_INTERFACE");
registerReceiver(receiver, filter);
return super.onBind(arg0);
}
else{ Log.i("Musica Service", "musicBind");
return musicBind;}
}

我有另一个活动通过musicBindIBinder与我的服务绑定,但另一方面,我已经将所有内容设置为在安卓自动界面中连接我的应用程序,但在关闭我的应用后,在断开设备与安卓自动的连接后,我无法停止我的MediaBrowserServiceCompat,我认为这是因为SERVICE_INTERFACE一直绑定服务。

如何从同一服务MediaBrowserServiceCompat停止或销毁此服务?

根据媒体浏览器服务生命周期文档,您的MediaBrowserServiceCompat通常只被绑定(因此在最后一个客户端解除绑定时被销毁)、只被启动(例如在后台播放音乐时)或同时被绑定和启动(例如当UI可见时播放音乐)。

只有当您的服务1)不再有任何绑定客户端,2)当您调用stopSelf()(假设它在某个时刻启动)时,它才会被破坏。Android Auto在与数百个其他应用程序合作后,不太可能继续绑定到您的服务,而不是适用于所有媒体应用程序的严重问题。

因此,您的服务更有可能是以某种方式启动的。根据媒体会话回调文档,当您开始播放时,您应该调用startService,当您停止播放时,应调用stopSelf——这可以确保您的服务(假设没有人仍然绑定到它)在播放停止时会被破坏。

您可以使用adb shell dumpsys activity services查看服务的状态(可以选择添加服务类的名称来筛选该类)。

最新更新