我想在连接互联网时在后台调用web服务。如果它是连接的,我想每一小时打一次电话,如果互联网关闭,然后停止服务。我该怎么办?它需要适用于从16到27的所有版本。
android中有一个广播,如果网络状态发生变化,它会通知您。在那里,你可以注册一个小时的报警管理器,检查是否连接了互联网,然后拨打网络服务。
如果广播通知您网络已断开,则您可以取消报警管理器。
以下是监听网络状态更改的文档:
https://developer.android.com/training/monitoring-device-state/connectivity-monitoring
这里是关于在android中使用报警管理器的好教程https://en.proft.me/2017/05/7/scheduling-operations-alarmmanager-android/
谷歌还推出了workManager,它以非常简单的方式为您完成这项工作
WorkManager API使指定可延迟、异步变得容易任务以及它们应该何时运行。这些API允许您创建一个任务将其交给WorkManager立即运行或在适当的时间运行时间例如,应用程序可能需要从网络。使用这些类,您可以设置任务,选择合适的运行环境(如"仅在设备正在充电并处于联机状态"(,然后将其交给WorkManager运行当条件满足时。即使如果您的应用程序是强制退出或设备重新启动。
这里是文档链接:
https://developer.android.com/topic/libraries/architecture/workmanager