我可以在android中停止由bindService而不是StartService启动的服务吗?
问题描述:
我把这个“Activity 1”绑定到Service上。我开始使用我可以在android中停止由bindService而不是StartService启动的服务吗?
Intent wrapperServiceIntent = new Intent(mContext,BleWrapper.class);
bindService(wrapperServiceIntent,mBLEWrapperServiceConnection,BIND_AUTO_CREATE);
我可以停止此服务使用
stopService(new Intent(mContext,BleWrapper.class));
insted的的
mContext.unbindService(mServiceConnection);
是出现上述情况可能与服务?
答
从技术文档:
当服务是所有客户端绑定,Android系统破坏它(除非它也与onStartCommand开始())。因此,如果服务是纯粹的绑定服务,则不必管理服务的生命周期 - Android系统会根据它是否绑定到任何客户端来管理它。但是,如果您选择实施onStartCommand()回调方法,则必须明确停止服务,因为服务现在被认为是启动的。在这种情况下,服务运行直到服务使用stopSelf()或另一个组件调用stopService(),停止自身,而不管它是否绑定到任何客户端。
答
不,您不能这样做,您需要先删除绑定。
Android的文件说:
注意,如果停止服务仍具有绑定到它与BIND_AUTO_CREATE集ServiceConnection对象,也不会被破坏,直到所有这些绑定被删除。
另一件事,在stopService
你需要传递mServiceConnection
而不是创建一个新的意图。