程序结构如下:
一个Activity,一个Service,使用bindService启动服务,Service使用Socket连接外边的服务器,成功后,使用finish关掉Activity。
此Activity实现一个接口,这个接口有一个函数,参数是一个字串。Service接收到数据后,呼叫这个函数(之前,Service保存了Activity的指针,方法是Service也实现了一个接口,其中一个函数参数就是Activity实现的接口类型,这样,Service启动成功后,Activity通过这个函数把this传给Service)。
因为是异步调用,Activity使用了消息机制响应收到的字串。
现在Activity使用finish退出,实际上,Service还在,虽然Service的onDestroy确实已经被调用了,Service里的Socket接收线程也还在,实际上接收一切正常,使用Log.d可以看到。那么Service呼叫Activity的那个函数呢,通过Log.d可以看到,也正常呼叫,在往下,实际上消息也运行正常。
结果就是Activiy看不到了,但是奶奶的一切还在正常运行。
------解决方案--------------------
Service还在,虽然Service的onDestroy确实已经被调用了,Service里的Socket接收线程也还在
你如果想要在推出activity时候都结束掉,需要在onDestroy里面close掉socket呀,你没有关socket网络连接当然还存在,但是服务和activity都已经结束掉了
所以在onDestroy关闭socket
------解决方案--------------------
是你的service是不是在destory的时候没有去关闭内部的thread。不管的话,当然 有问题啊