Android - 如何在wifi可用时保持3g连接

时间:2012-03-08 09:03:15

标签: android networking wifi 3g

我的应用程序通过与服务器的持久连接进行连接。如果设备当前正在使用3G,它将连接3g以上 问题是,如果它使用3G连接并移入wifi,连接就会下降。如何防止它断开连接?

2 个答案:

答案 0 :(得分:3)

听起来服务器无法容纳客户端无缝切换到不同的IP地址,或者它可能正在使用保持活动数据包之类的东西来维持连接状态,当3G连接断开时,它会断开您的会话。

这可能不是你可以控制的。从Android的角度来看 - 该设备将更喜欢WiFi,具体取决于用户的喜好,您可能无法直接控制它。

简而言之 - 如果您无法修改或重新配置通信协议以允许动态更改客户端IP,那么您无法使用Android来缓解此问题。

所有移动设备,以及在较小程度上,台式机/笔记本电脑在某些时候都会改变其面向公众的IP地址,因此对我而言,这听起来像是服务器/协议设计中的错误或疏忽。


编辑:

为了回应您的评论,并且为了UX的利益,当用户请求使用WiFi时,您应该非常小心地找到一种强制您的应用程序(甚至整个设备)保留在3G上的方法。

大多数人都使用他们的设备限制数据计划,如果他们认为他们使用的是WiFi(很可能是免费的,或者至少没有额外的费用),他们会非常高兴,而事实上你已经强制他们的设备继续使用可能非常昂贵的3G数据。

当任何方法可能主动规避Android环境为您提供的合理限制时,这一点尤其重要,因此在安装时可能不会被标记为“花费您的金钱服务”。


编辑2:

因此,您可能有办法实现这一目标,但它依赖于不受支持的私有Android API,这些API可能随时发生变化 - 通常的免责声明适用。

查看here访问ConnectivityManager对象的位置,以便您启用移动数据。

此方法确实要求您针对Android源代码树构建,并使用带有“system”的共享用户ID,因此可能适合或不适合,但这些API是私有的(因为应用程序不应该这样做)这没有用户操作),但它可能会帮助你。

答案 1 :(得分:0)

这就是Android的工作原理。你的应用程序不应该保持持久连接,它只应该在需要时打开连接。