0

我一直在为我正在开发的安卓应用而疯狂。我正在制作这样的套接字:

Socket socket = new Socket(IPAdress, Port);

当我新安装该应用程序时,它运行良好。但随后我关闭了应用程序(也关闭了服务器,重新启动服务器)。我打电话

socket.close();

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

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

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

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

4

2 回答 2

0

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

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

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

于 2013-03-09T16:52:20.517 回答
0

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

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

套接字 = 空;

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

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

于 2013-03-12T19:55:52.020 回答