应用程序关闭时如何接收Android Nougat的网络丢失回调?

@H_502_1@我希望能够在应用程序关闭时进行任何网络更改或任何网络连接丢失唤醒我的应用程序的绑定服务.过去通过在 Android Nougat中弃用之前侦听CONNECTIVITY_CHANGE广播来完成.只有当应用程序通过编程创建广播接收器打开时,人们仍然可以收听这些广播,但是如果关闭我的应用也需要被唤醒.

我注意到ConnectivityManager.registerNetworkCallback(NetworkRequest,PendingIntent)方法及其JavaDoc声称它在应用程序关闭时可以正常工作,但是当我从我的服务中调用它时,它似乎只能在它停止响应事件之前工作一次.我看到ConnectivityManager.registerNetworkCallback(NetworkRequest,NetworkCallback)的类似问题,这是一个仅适用于应用程序打开的Lollipop功能.如何让这个基于PendingIntent的回调始终如一?

谷歌建议取代CONNECTIVITY_CHANGE广播的所有替代品只是检查是否存在网络.其中大多数是作业调度服务.他们假设CONNECTIVITY_CHANGE广播仅用于等待网络可用性来执行作业.但是,我的应用程序是一个VPN网络实用程序,因此我需要在任何网络更改时收到通知 – 我不仅仅是在等待网络的存在.

谢谢你的帮助!

解决方法

您可以使服务实现 NetworkCallback接口,并在服务的onCreate或onStartCommand上使用 registerNetworkCallback注册您的回调/服务并在onDestroy上取消注册.

在回调中,例如onAvailable或onLost,您可以添加业务逻辑.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...