我有一个简单的应用程序,定期向服务器发送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_ changed’,这意味着“连接已启动,但IP通信量暂时不可用”。(见TelephonyManager)。在HTTP_GET请求成功的情况下,状态更改为'8‘。我的应用程序不使用位置管理,我已经关闭了所有其他非关键的应用程序运行!
我想知道:
对此的任何帮助/洞察力都是非常感谢的!提前感谢!
发布于 2012-03-31 05:44:33
我的应用程序运行在华为IDEOS和Android2.3.5的X3上也有同样的问题。该应用程序每分钟使用HttpClient向服务器发送数据。
使用logcat,我可以看到数据连接丢失,然后在一段时间后重新建立。在此之前,我的应用程序停止工作,因为它试图发送数据,没有连接,导致异常,这是没有正确处理的。
我不知道断断续续地中断数据连接的原因,但是现在我通过在发送数据之前检查是否有数据连接来处理这种情况。在我的例子中,一些数据从未被发送并不重要。如果避免数据丢失很重要,我可以缓冲数据,并在连接返回后发送数据。
public Boolean isDataConnection() {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
return tm.getDataState() == TelephonyManager.DATA_CONNECTED;
}https://stackoverflow.com/questions/5334063
复制相似问题