Android Java Socket移动电话到PC - 重新连接套接字

时间:2013-03-09 14:50:08

标签: java android multithreading sockets

我一直在为我正在开发的Android应用程序疯狂。 我正在制作这样的插座:

Socket socket = new Socket(IPAdress, Port);

当我刚刚安装应用程序时,它的工作原理非常好。 但随后我关闭了应用程序(关闭服务器,重新启动服务器)。 我打电话给

socket.close();

销毁我的应用程序时(onDestroy)。 当我重新启动应用程序时,我无法再次连接,我需要手动从现金中删除应用程序,然后再次运行。

当我输入错误的IP地址时,会发生同样的事情。我不能只是重新进入一个新的地址并再次尝试制作一个新的插座。我是这样做的:

socket.close();
socket = null;
Socket socket = new Socket(IPAdress, Port);

它不允许我这样做。 我正在新的Thread

中创建新套接字

2 个答案:

答案 0 :(得分:0)

onDestroy不是关闭套接字的正确位置。只有在系统资源不足时才会调用它。

我不确定您正在使用套接字做什么,但如果用户不再看到该应用程序时您不需要它,则应在onPause或{{1}中将其关闭}}

请参阅http://developer.android.com/reference/android/app/Activity.html中的应用程序生命周期。

答案 1 :(得分:0)

所以我想出了为什么我的应用程序在调用时一直崩溃的原因。 即使应用程序关闭,套接字仍保持活动状态,因为它仍保留在缓存中。 因此,当退出应用程序时,我有一个布尔值告诉我,如果我有一个有效的套接字,那么我就可以关闭它。如果我无法打开插座,我就不需要关闭它。

然后在重新启动时,我只是这样做:

socket = null;

然后我可以创建一个新的套接字!

(很抱歉由于无法正确缩进和格式化此文本,我尝试了四个空格,但这不起作用:(