1

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

问题是该工具在 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 上遇到过这种情况?可能是什么原因?

非常感谢!

4

1 回答 1

0

我们刚刚遇到了同样的问题。

尝试使用这种方法

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

即使它更小。

于 2013-09-19T13:13:31.950 回答