有时候我有一个java.net.SocketTimeoutException
while ((bytesRead = inputStream.read(content)) != -1) {
baos.write(content, 0, bytesRead);
str = baos.toString("UTF-8");
System.out.println(str);
requestSocket.setSoTimeout(8000);
break;
}
在这一行:
while ((bytesRead = inputStream.read(content)) != -1)
答案 0 :(得分:0)
您正在获取读取超时,因为您设置了8秒的读取超时,并且对等体发送数据的时间超过8秒。如果您不想要,请增加读取超时。如果你确实需要它,请修复同行。
你的代码没有多大意义。你是在循环中设置读取超时,这是没有意义的,并且你在一次读取后就会中断,同上。
答案 1 :(得分:0)
手机睡觉时会发生吗?
几个月前我遇到了类似的问题,这个问题与"打瞌睡"特征
https://developer.android.com/training/monitoring-device-state/doze-standby.html
当设备长时间不使用时,Doze会通过延迟应用的后台CPU和网络活动来减少电池消耗。 App Standby推迟用户最近未与之交互的应用的后台网络活动。
自Android>以来已添加6.X
https://android-developers.googleblog.com/2015/10/how-google-cloud-messaging-handles-doze.html
Android 6.0 Marshmallow引入了一项名为“Doze”的新节能功能。当用户将其拔出并静止一段时间并关闭屏幕时,设备进入Doze。发生这种情况时,系统会延迟应用程序活动以节省电量。它将定期并简要地恢复正常操作,称为空闲维护窗口,以执行应用程序同步和其他待处理操作。