我希望在应用程序关闭时,任何网络更改或网络连接丢失都能唤醒我的应用程序的绑定服务。这通常是通过监听CONNECTIVITY_CHANGE广播来实现的,但在Android Nougat中这样做已被弃用。只有当应用程序通过编程创建广播接收器打开时,人们才能收听这些广播,但如果应用程序关闭,也需要唤醒它。
我注意到ConnectivityManager.registerNetworkCallback(NetworkRequest,PendingIntent)方法和它的JavaDoc声明它在应用程序关闭时工作,但当我从我的服务调用它时,它似乎只工作了一次,然后它停止对事件的响应。我看到了类似的问题ConnectivityManager.registerNetworkCallback(NetworkRequest,NetworkCallback),一个棒棒糖功能,只在应用程序打开时工作。如何让这个基于PendingIntent的回调一致地工作?
谷歌建议的所有替代CONNECTIVITY_CHANGE广播的方法都只是检查网络的存在。它们中的大多数是作业调度服务。它们假设CONNECTIVITY_CHANGE广播仅用于等待网络可用性来执行作业。但是,我的应用程序是一个VPN网络实用程序,所以我需要在任何网络更改时得到通知--我不仅仅是在等待网络的出现。
谢谢你的帮忙!
发布于 2018-06-27 06:42:32
您可以让您的服务实现NetworkCallback接口,并在服务的onCreate或上使用registerNetworkCallback注册您的回调/服务,然后在onDestroy上注销。
在onAvailable或onLost等回调中,添加您的业务逻辑。
https://stackoverflow.com/questions/39737384
复制相似问题