当前位置: 代码迷 >> Android >> Android Activit finish 后到底是退出了啥?该如何解决
  详细解决方案

Android Activit finish 后到底是退出了啥?该如何解决

热度:246   发布时间:2016-05-01 21:55:12.0
Android Activit finish 后到底是退出了啥?
程序结构如下:

一个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。不管的话,当然 有问题啊
  相关解决方案