我有一个简单的应用程序,它会定期向服务器发送 HTTP_GET 请求。通过 3G 发送请求时,我注意到请求有时会超时(服务器端日志显示它也从未收到请求)。
在尝试了不同的组合后,我发现当这个问题发生时有一个一致的模式(每 5-15 次成功请求后超时)。
- TelephonyRegistry: notifyDataConnection() state=2isDataConnectivityPossible()true, reason=null
- TelephonyRegistry: broadcastDataConnectionStateChanged() state=CONNECTEDtypes=default supl, interfaceName=rmnet0
- NetworkLocationProvider: onDataConnectionStateChanged 3
根据 Google 的说法,NetworkLocationProvider 已更改为“DATA_SUSPENDED”,这意味着“连接已启动,但 IP 流量暂时不可用”。(请参阅TelephonyManager)。在 HTTP_GET 请求成功的情况下,状态更改为“8”。我的应用程序不使用位置管理,并且我已经关闭了所有其他非关键应用程序的运行!
我想知道:
- 这个问题的原因是什么?为什么连接状态变为 DATA_SUSPENDED?
- 是否有可能避免/克服这个问题?
非常感谢对此的任何帮助/见解!提前致谢!