¿Cómo recibir devoluciones de llamada en la pérdida de red para Android Nougat cuando la aplicación está cerrada?

Quiero poder tener cualquier cambio de red o cualquier pérdida de conectividad de red para despertar el servicio vinculado a mi aplicación cuando la aplicación esté cerrada. Esto solía ser logrado escuchando las transmisiones de CONNECTIVITY_CHANGE antes de hacerlo quedó obsoleto en Android Nougat. Todavía se pueden escuchar estas emisiones sólo mientras la aplicación está abierta creando mediante programación un receptor de difusión, pero mi aplicación también debe ser despertada si está cerrada.

Me di cuenta de que el método ConnectivityManager.registerNetworkCallback (NetworkRequest, PendingIntent) y su JavaDoc afirma que funciona mientras la aplicación está cerrada, pero cuando la llamo desde mi servicio, parece que sólo funciona una sola vez antes de que deja de responder a los eventos. Veo problemas similares con ConnectivityManager.registerNetworkCallback (NetworkRequest, NetworkCallback), una función Lollipop que sólo funciona con la aplicación abierta. ¿Cómo consigo que esta devolución de llamada basada en PendingIntent funcione de manera consistente?

Todos los reemplazos que Google sugiere en lugar de las transmisiones de CONNECTIVITY_CHANGE simplemente comprueban la presencia de una red. La mayoría de ellos son servicios de programación de trabajos. Suponen que las transmisiones CONNECTIVITY_CHANGE sólo se utilizaban para esperar la disponibilidad de la red para realizar un trabajo. Sin embargo, mi aplicación es una utilidad de red VPN, por lo que necesito ser notificado en cualquier cambio de red – No estoy meramente esperando la presencia de una red.

¡Gracias por tu ayuda!

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.