我一直在为我正在开发的Android应用程序疯狂。 我正在制作这样的插座:
Socket socket = new Socket(IPAdress, Port);
当我刚刚安装应用程序时,它的工作原理非常好。 但随后我关闭了应用程序(关闭服务器,重新启动服务器)。 我打电话给
socket.close();
销毁我的应用程序时(onDestroy)。 当我重新启动应用程序时,我无法再次连接,我需要手动从现金中删除应用程序,然后再次运行。
当我输入错误的IP地址时,会发生同样的事情。我不能只是重新进入一个新的地址并再次尝试制作一个新的插座。我是这样做的:
socket.close();
socket = null;
Socket socket = new Socket(IPAdress, Port);
它不允许我这样做。
我正在新的Thread
答案 0 :(得分:0)
onDestroy
不是关闭套接字的正确位置。只有在系统资源不足时才会调用它。
我不确定您正在使用套接字做什么,但如果用户不再看到该应用程序时您不需要它,则应在onPause
或{{1}中将其关闭}}
请参阅http://developer.android.com/reference/android/app/Activity.html中的应用程序生命周期。
答案 1 :(得分:0)
所以我想出了为什么我的应用程序在调用时一直崩溃的原因。 即使应用程序关闭,套接字仍保持活动状态,因为它仍保留在缓存中。 因此,当退出应用程序时,我有一个布尔值告诉我,如果我有一个有效的套接字,那么我就可以关闭它。如果我无法打开插座,我就不需要关闭它。
然后在重新启动时,我只是这样做:
socket = null;
然后我可以创建一个新的套接字!
(很抱歉由于无法正确缩进和格式化此文本,我尝试了四个空格,但这不起作用:(