我正在开发一个安卓汽车,但我在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;}
}我有另一个通过musicBind IBinder绑定到我的服务的活动,但另一方面,我已经设置了所有的东西来连接我的应用程序在安卓自动界面,但关闭我的应用程序后,断开设备从安卓自动连接我无法停止我的MediaBrowserServiceCompat,我想是由于这个SERVICE_INTERFACE保持绑定的服务。
如何从相同的服务MediaBrowserServiceCompat停止或销毁此服务
发布于 2017-01-31 11:01:56
根据media browser service lifecycle documentation,您的MediaBrowserServiceCompat通常只被绑定(因此在最后一个客户端解绑时被销毁)、仅启动(例如在后台播放音乐时)或同时绑定和启动(例如当您的UI可见时播放音乐时)。
你的服务只有在1)不再有任何绑定的客户端和2)调用stopSelf() (假设它在某个时刻启动)时才会被销毁。Android Auto与数百个其他应用程序合作后,不太可能继续绑定到您的服务,而不是一个适用于所有媒体应用程序的严重问题。
因此,您的服务更有可能是以某种方式启动的。根据Media Session callbacks documentation,您应该在开始播放时调用startService,在停止播放时调用stopSelf -这可以确保您的服务在停止播放时被销毁,假设没有人绑定它。
您可以使用adb shell dumpsys activity services查看服务的状态(可以选择添加服务的类名,以便只过滤该类)。
https://stackoverflow.com/questions/41948263
复制相似问题