在HSDPA上,HTC One与java.net.Socket卡在DataInputStream.read中。在3G和Wifi上工作正常

时间:2013-08-08 08:20:11

标签: sockets

它在Android上。我有一个发送/接收数据包的聊天工具。在客户端,我解析数据包并向用户显示消息。传统的聊天工具。

问题是该工具在WiFi,Edge和3G上的其他设备上运行良好,除了HTC One。在HSDPA(3G)上,我们注意到客户端无法像往常一样接收数据包。在我们重置套接字之前它一直停留在那里。

我调试并发现DataInputStream.read()方法(在while循环中监听传入的数据)被卡在那里。我将Android源代码更深入,但直到Oracle的java.libcore软件包。

我想问题是因为HTC One的睡眠模式。但在前台,应用程序也无法接收消息,直到我们打开一个新的套接字(长时间超时,大约4分钟,这对于聊天工具来说太长了。)

在研究过程中,我尝试为HTC安装SmartSync Disabler,情况似乎更好。当我反编译工具时,它只设置2个参数:sleep_mode_mode为off,data_on_wifi为off,这意味着在睡眠模式下,SmartSync不会断开wifi。

我的问题是,有没有人在HTC One之前遇到过这种情况?可能是什么原因?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题。

尝试使用此方法

void    setReceiveBufferSize(int size)
void    setSendBufferSize(int size)

即。把它缩小。