在我的应用程序中,一些片段在加载到活动中时启动 ServerSocket:
serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true); //get ready to reuse this socket
serverSocket.bind(new InetSocketAddress(Inet4Address.getByAddress(wiFiComm.ipAdr), wiFiComm.port));
当fragment或Activity暂停或销毁时,ServerSocket关闭(网络在Activity内实现)。
它工作正常,您可以在片段之间切换,将应用程序发送到后台,终止应用程序等 - 套接字处理正确。唯一的例外:应用程序一段时间(1小时或更长时间)未使用后,有时无法绑定套接字。
可能是什么原因?
好的,“有时”是指当您离开 WiFi 网络(或在智能手机上禁用 WiFi)然后重新进入 WiFi 时。如果您有一个在前台运行服务器端口的应用程序,它会在您重新进入无线网络后抛出此异常。