首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止手机丢失IP流量?

如何防止手机丢失IP流量?
EN

Stack Overflow用户
提问于 2011-03-17 02:06:50
回答 1查看 443关注 0票数 1

我有一个简单的应用程序,定期向服务器发送HTTP_GET请求。在通过3G发送请求时,我注意到请求有时超时(服务器端日志显示它也从未接收到请求)。

在尝试了不同的组合之后,当出现这个问题时,我发现了一个一致的模式(每5-15次成功的请求就会超时)。

代码语言:javascript
复制
- 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‘。我的应用程序不使用位置管理,我已经关闭了所有其他非关键的应用程序运行!

我想知道:

  1. 造成这个问题的原因是什么?为什么连接状态会转到DATA_SUSPENDED?
  2. 能避免/克服这个问题吗?

对此的任何帮助/洞察力都是非常感谢的!提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-03-31 05:44:33

我的应用程序运行在华为IDEOS和Android2.3.5的X3上也有同样的问题。该应用程序每分钟使用HttpClient向服务器发送数据。

使用logcat,我可以看到数据连接丢失,然后在一段时间后重新建立。在此之前,我的应用程序停止工作,因为它试图发送数据,没有连接,导致异常,这是没有正确处理的。

我不知道断断续续地中断数据连接的原因,但是现在我通过在发送数据之前检查是否有数据连接来处理这种情况。在我的例子中,一些数据从未被发送并不重要。如果避免数据丢失很重要,我可以缓冲数据,并在连接返回后发送数据。

代码语言:javascript
复制
public Boolean isDataConnection() {
    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    return tm.getDataState() == TelephonyManager.DATA_CONNECTED;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5334063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档