【问题标题】:Android - How do I detect that my app has lost internet connection although i'm still connected to WiFiAndroid - 我如何检测到我的应用程序已失去互联网连接,尽管我仍然连接到 WiFi
【发布时间】:2014-05-06 16:51:00
【问题描述】:

我有一个应用程序,它有一个功能可以告诉用户他们何时在线/离线。但是有一个案例完全失败了。

我已经搜索了所有网络(我希望搜索正确)以寻找解决我问题的方法,但从未真正找到。用例如下:

前置条件:

  • Android 设备
  • 无线网络

问题描述:

1 - 我已连接到无线路由器
2 - 路由器已连接到互联网
3 - 由于某种原因,路由器失去了与互联网的连接(我仍然连接到路由器,但它没有连接到互联网)

问题:

  • 我尝试使用具有不同类型操作的广播接收器,但它们都仅在 WiFi 连接丢失/连接时触发...而不是在 WiFi 不提供网络访问时触发。

我需要什么:

  • 我需要捕获(如果可能)告诉我“嘿,您的互联网状态已更改”的事件,以便我可以检查我是否可以访问。

【问题讨论】:

    标签: android networking wifi


    【解决方案1】:

    我认为您想要/需要做的是创建一个后台服务,配置为使用AlarmManager 定期运行,这将检查是否有可靠的网络资源可用(即 ping 一个您信任在线的服务器一直)。

    如果您的 ping 操作成功,则您在线并且连接到互联网;如果失败,那么您已连接,但未在线

    您必须在准确性(检查频率)和电池寿命方面的性能之间做出妥协,因为如果您一直这样做,那么唤醒服务和发出网络请求对电池来说并不容易.

    【讨论】:

    • 我试图找到一个更像是接收者而不是主动方式的解决方案。但是,它似乎是唯一的(现在我希望......)方式。感谢您的帮助。
    【解决方案2】:

    很少有系统能真正做到这一点。我不完全确定它是否存在,无论如何都是开源的。想想主要的消费电子产品,真的会出现这样的错误吗?即使情况相同?

    您很可能需要经常检查互联网连接是否正常。通过网页的后台加载,向服务器发送数据/ping等。

    【讨论】:

    • 我知道这不是常见的情况,但由于这是客户的请求,我需要检查该情况的正确答案。
    猜你喜欢
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多