Android - 尽管我仍然连接到 WiFi,但我如何检测到我的应用已失去互联网连接

标签 android networking wifi

我有一个应用程序,它具有一项功能,可以在用户在线/离线时通知用户。但是有一种情况是完全失败的。

我已经在整个网络上搜索(我希望搜索正确)以找到解决我问题的方法,但从未真正找到一个。用例如下:

先决条件:

  • 安卓设备
  • 无线网络

问题描述:

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

问题:

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

我需要什么:

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

最佳答案

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

如果您的 ping 操作成功表明您在线并且连接到互联网;如果失败,则您已连接不在线

您必须在准确性(检查频率)和电池生命周期方面的性能之间做出折衷,因为如果您一直这样做,唤醒服务和发出 Web 请求对电池来说并不容易.

关于Android - 尽管我仍然连接到 WiFi,但我如何检测到我的应用已失去互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500493/

相关文章:

iphone - 选择 WiFi 网络

ssh - GitLab (SSH) 通过公共(public) WIFI,端口 22 被阻止

java - 滑动在 Appium Android Webview 中不起作用

android - 当客户端是 Android 时如何在不使用 SSL 的情况下保护 GAE 数据库

android - 如何使用 Android native API 获取 Vcard 格式的 Android 联系人

azure - 有没有办法列出应用程序安全组中的所有虚拟机

javascript - NodeJS - TCP - 发送 HTTP 请求

java - 使用 Java、Apache Common Net 将文件通过 FTP 传输到大型机

android - (新手)有人可以给我一个 Activity 级别偏好的例子吗?

arduino - ESP8266 - 实时更新服务器,无需刷新?