我可以在android中停止由bindService而不是StartService启动的服务吗?

时间:2015-11-07 08:00:16

标签: android android-service

我将此“活动1”绑定到服务。我使用

启动了服务
Intent wrapperServiceIntent = new Intent(mContext,BleWrapper.class);
bindService(wrapperServiceIntent,mBLEWrapperServiceConnection,BIND_AUTO_CREATE);

我可以使用

停止此服务吗?
stopService(new Intent(mContext,BleWrapper.class));

insted of

mContext.unbindService(mServiceConnection);

上述情况可能吗?

2 个答案:

答案 0 :(得分:1)

来自文档:

当服务从所有客户端解除绑定时,Android系统会将其销毁(除非它也是以onStartCommand()启动的)。因此,如果服务纯粹是绑定服务,则不必管理服务的生命周期 - Android系统会根据是否绑定到任何客户端来为您管理服务。

但是,如果您选择实现onStartCommand()回调方法,则必须显式停止该服务,因为现在认为该服务已启动。在这种情况下,服务会一直运行,直到服务停止使用stopSelf()或其他组件调用stopService(),,无论它是否绑定到任何客户端

答案 1 :(得分:1)

不,你不能这样做,你需要先删除绑定。

Android文档说:

  

请注意,如果停止的服务仍然具有绑定到它的ServiceConnection对象并且设置了BIND_AUTO_CREATE,则在删除所有这些绑定之前不会销毁它。

另一件事,在stopService中,您需要传递mServiceConnection而不是创建新意图。