我有一项服务,每小时轮询一次尝试将数据自动从设备同步到网络。
我有它的工作但我需要找到一种建立互联网连接的方法,如果没有可用的。
例如 - 如果我的手机处于待机模式(屏幕锁定了一段时间),则会断开互联网连接,并且在需要时无法同步。
我想尝试通过wifi连接(如果可用),然后根据需要使用3G 有可靠的方法吗?
更新 - 我在网上发现了一篇文章,如果没有无线网络,可以使用此代码尝试通过3G进行连接:
int resultInt = connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "enableHIPRI");
不幸的是它似乎并不适用于所有设备,也许我需要尝试其他选项而不是“enableHIPRI”??
有什么想法吗?
答案 0 :(得分:2)
好的,虽然我无法解决这个问题,但我发现同步尝试之间延迟的主要原因是因为cpu在睡眠模式下停止,这意味着我的计时器任务暂停了。 / p>
我的解决方法是使用唤醒意图重写服务以解决计时器问题。
这使我的解决方案更加可靠,所以我正在关闭这个问题! :)
答案 1 :(得分:0)
您应该可以使用ConnectivityManager完成大部分操作。它允许您查询可用的网络类型,并使用requestRouteToHost,您应该能够确保建立连接所需的连接。
答案 2 :(得分:0)
我认为你不能在手机上依赖这样的东西,就像在任何嵌入式设备中一样,你不能确定设备是否会在你想要的时候连接并保持连接。您只能为用户留下数据未同步的消息或尝试通过检查是否存在连接来最小化它,然后不仅在一小时内同步。