如果使用startService()启动服务,则应使用stopService()停止服务。
系统可以运行服务的原因有两个。 如果有人调用Context.startService(),则系统将检索服务(创建服务,并在需要时调用其onCreate()方法),然后使用客户端提供的参数调用其onStartCommand(Intent,int,int)方法。 此时服务将继续运行,直到调用Context.stopService()或stopSelf()。 请注意,对Context.startService()的多次调用不会嵌套(尽管它们确实会导致对onStartCommand()的多次调用),因此,无论启动了多少次,一旦Context.stopService()或stopSelf都会停止服务 () 叫做; 但是,服务可以使用其stopSelf(int)方法来确保在处理启动的意图之前不停止服务。
您可以使用bindService()绑定到任意数量的ServiceConnection,但要注意传递给它的标志。 如果您传递0,则如果您调用stopService(),服务将停止(我不确切地知道ServiceConnection会发生什么)。 否则,如果您希望服务一直存活到ServiceConnection绑定到它,则使用BIND_AUTO_CREATE。
这是来自stopService():
请求停止给定的应用程序服务。 如果该服务未运行,则不会发生任何事情。 否则它将停止。 请注意,不计入对startService()的调用-无论服务启动了多少次,都将停止该服务。
请注意,如果停止的服务仍然具有绑定了ServiceConnection对象且已设置BIND_AUTO_CREATE,则在删除所有这些绑定之前,该服务不会被销毁。 有关服务生命周期的更多详细信息,请参见服务文档。
如果您没有停止给定服务的权限,则此函数将引发SecurityException。
我希望这有帮助..