Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Java Socket手机到PC——重新连接Socket_Java_Android_Multithreading_Sockets - Fatal编程技术网

Android Java Socket手机到PC——重新连接Socket

Android Java Socket手机到PC——重新连接Socket,java,android,multithreading,sockets,Java,Android,Multithreading,Sockets,我一直在为我正在开发的android应用程序疯狂。 我正在制作这样一个插座: Socket socket = new Socket(IPAdress, Port); socket.close(); socket = null; Socket socket = new Socket(IPAdress, Port); 当我刚安装这个应用程序时,它运行得非常好。 然后我关闭应用程序(同时关闭服务器,重新启动服务器)。 我打电话 销毁我的应用程序(onDestroy)时。 当我重新启动应用程序时,我

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

Socket socket = new Socket(IPAdress, Port);
socket.close();
socket = null;
Socket socket = new Socket(IPAdress, Port);
当我刚安装这个应用程序时,它运行得非常好。 然后我关闭应用程序(同时关闭服务器,重新启动服务器)。 我打电话

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

当我输入错误的IP地址时也会发生同样的情况。我不能只是重新输入一个新地址,然后再尝试创建一个新套接字。我是这样做的:

Socket socket = new Socket(IPAdress, Port);
socket.close();
socket = null;
Socket socket = new Socket(IPAdress, Port);
它不让我这么做。
我正在一个新的
线程中创建新的套接字
onDestroy
不是关闭套接字的正确位置。只有当系统资源不足时才会调用它

我不确定你到底在用这个套接字做什么,但是如果你在应用程序对用户不再可见时不需要它,你应该在
onPause
onStop
中关闭它


请参阅中的应用程序生命周期。因此,我找到了我的应用程序在呼叫时不断崩溃的原因。 即使应用程序关闭,套接字仍保持活动状态,因为它仍保留在缓存中。 因此,当退出应用程序时,我有一个布尔值,它告诉我是否有一个有效的套接字,然后我就可以关闭它。如果我不能打开插座,我不需要关闭它

然后在重新启动时,我只需执行以下操作:

socket=null

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


(很抱歉,无法正确缩进和格式化此文本,我尝试了四个空格,但没有成功:(

我们需要更多代码或实际错误。我将在一秒钟内复制它们:)此外,您如何使代码看起来像是从SDK中提取的?我不太理解最后一部分,但我猜您的意思是“如何通过语法突出显示获取代码的标记?”。在这种情况下,将代码缩进四个空格或使用编辑器中的“代码”按钮。如果这是您的意思,您指的是IDE,而不是SDK。“重新启动”应用程序是什么意思?对于这一点,“应用程序”和“onDestroy”是什么意思(一个活动,或者一个实际的应用程序对象)?只是猜测(没有代码),但是来自描述(如果删除应用程序,它会再次工作)听起来你好像遇到了一些与生命周期相关的问题,如果应用程序/活动没有被销毁,你可能没有在你认为的地方安装和拆除你的套接字。@LukasKnuth我试图在下面用四个空格缩进我的答案,但没有用:(是的,我指的是一个IDE:D,我在android问题上搞砸了!!