Java 绑定服务的多个实例—绑定服务在应用程序结束后仍然存在
作为一名android新手,我想我可能误解了绑定服务 我创建了一个服务来包装对服务器的访问。作为该服务的一部分,该服务正在侦听多播地址,以识别本地网络上的设备何时出现和消失 但是,由于启动了多个服务实例,我遇到了一些问题。当活动关闭(使用“上一步”按钮)后不久重新打开时,会发生这种情况。其结果是服务无法绑定到本地端口,因此无法侦听多播 我原以为一旦活动停止,绑定服务就会死掉,但事实似乎并非如此 我是否误解了绑定服务,或者我是否做错了其他事情 编辑 因此,我的误解是,我假设程序将在最后一个非守护进程线程关闭时立即清理,而这将在活动终止时立即清理 我已通过显式取消侦听线程并在onDestroy()中关闭套接字解决了此问题。尝试在onbackpressed()上使用Stopservice() 但是,由于启动了多个服务实例,我遇到了一些问题 在任何时候,您的流程中都只会运行零个或一个给定服务类的实例 我原以为一旦活动停止,绑定服务就会死掉,但事实似乎并非如此 服务将在以下时间后销毁:Java 绑定服务的多个实例—绑定服务在应用程序结束后仍然存在,java,android,Java,Android,作为一名android新手,我想我可能误解了绑定服务 我创建了一个服务来包装对服务器的访问。作为该服务的一部分,该服务正在侦听多播地址,以识别本地网络上的设备何时出现和消失 但是,由于启动了多个服务实例,我遇到了一些问题。当活动关闭(使用“上一步”按钮)后不久重新打开时,会发生这种情况。其结果是服务无法绑定到本地端口,因此无法侦听多播 我原以为一旦活动停止,绑定服务就会死掉,但事实似乎并非如此 我是否误解了绑定服务,或者我是否做错了其他事情 编辑 因此,我的误解是,我假设程序将在最后一个非守护进
- 对
的所有调用都有相应的bindService()
,并且unbindService()
- 如果为此正在运行的服务实例调用了
,则调用startService()
或服务调用stopService()
stopSelf()
我不完全清楚为什么在这里使用绑定模式。就我个人而言,通常情况下,我觉得这比它的价值更麻烦。也许考虑使用命令模式,通过<代码>启动服务()/代码>向服务发送命令,并通过<代码>停止服务()/<代码>或<代码> StSelff()/<代码>停止服务。也就是说,您在服务中多次启动线程。(线程也可以继续运行而不被其他代码引用,它们不会被神奇地垃圾收集)
stopService()
不会与绑定模式一起使用。是的,谢谢。看来要过一段时间了。ondestory()
方法更加快捷。