【发布时间】:2017-02-05 20:04:26
【问题描述】:
我希望能够在应用关闭时让任何网络更改或任何网络连接丢失唤醒我的应用绑定的服务。这过去是通过监听 CONNECTIVITY_CHANGE 广播来完成的,然后在 Android Nougat 中已弃用。通过以编程方式创建广播接收器,只有在应用打开时,人们可能仍会收听这些广播,但我的应用在关闭时也需要唤醒。
我注意到 ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent) 方法和它的 JavaDoc 声称它在应用程序关闭时工作,但是当我从我的服务调用它时,它似乎只工作一次就停止响应事件。我看到 ConnectivityManager.registerNetworkCallback(NetworkRequest, NetworkCallback) 的类似问题,这是一个仅在应用程序打开时才有效的棒棒糖功能。如何让这个基于 PendingIntent 的回调始终如一地工作?
Google 建议的所有替代 CONNECTIVITY_CHANGE 广播的方法只是检查网络是否存在。其中大部分是作业调度服务。他们假设 CONNECTIVITY_CHANGE 广播仅用于等待网络可用性以执行工作。但是,我的应用程序是一个 VPN 网络实用程序,因此我需要在任何网络更改时收到通知——我不只是在等待网络的存在。
感谢您的帮助!
【问题讨论】:
标签: android networking broadcastreceiver android-networking android-7.0-nougat