5

我正在玩一个开源项目,希望我可以为我提交的一个让我发疯的错误提供修复。简短的版本是,如果更改网络服务,应用程序就会死掉。在以下情况下会发生这种情况(略有不同):

  • 我从 WiFi 覆盖步行到 4g,反之亦然
  • 我通过 WiFi 与客户端连接,然后关闭 WiFi,故障转移到 4g

我认为问题可能出在应用程序的isConnected方法上,该方法返回:

return ni != null && ni.isConnected();

我将(在本地 SDK 中)更新为:

return ni != null && ni.isConnectedOrConnecting();

但是一旦我真正切换到硬件设备而不是虚拟设备,我现在看到错误在于 SSL 连接。我不知道问题是否在于它一直在运行,所以总是会“中断”,或者是否应该进行某种尝试/捕获,或者连接是否只是需要某种机制来重新连接而不是呕吐并拉动应用程序关闭。

希望快速修复,我去寻找如何为连接管理/启用 SSL,但却发现了很多令人沮丧的解决方法。

这是 SDK 日志中的即时错误。

08-06 03:38:48.795:W/InputEventReceiver(16140):尝试完成输入事件,但输入事件接收器已被释放。08-06 03:38:57.744:W/System.err(16140):javax.net.ssl.SSLException:读取错误:ssl=0x4144cb18:系统调用期间 I/O 错误,连接超时 08-06 03:38 :57.744: W/System.err(16140): 在 org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read(Native Method) 08-06 03:38:57.744: W/System.err(16140):在 org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:651)

我想知道的是,当网络服务切换时,是否有规定的方法来处理非 HTTP SSL/TLS 开放连接。我想需要进行一次新的握手,但是是否有.isFading()或类似的广播信息可以优雅地挂起应用程序,直到连接切换或正式消失?

4

0 回答 0