Biblioteca Android NetworkStateObserver
Una biblioteca que le ayuda a verificar el estado de su red, si está disponible, perdida, no disponible y también verificar la accesibilidad de su red cuando su servidor no funciona o su ISP está conectado pero no hay suscripción de datos.
Demostración:
1. Agregue NetworkStateObserver a su proyecto
- Incluya jitpack en el archivo settings.gradle de su raíz.
pluginManagement { repositorio { … maven { url ‘https://jitpack.io’ } } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositorio { … maven { url ‘https://jitpack.io’ } } }
- Y agregue su dependencia al archivo build.gradle a nivel de aplicación:
dependencias { implementación ‘com.github.RhymezxCode:NetworkStateObserver:1.1.3’ //Implementación de Livedata ‘androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0’ implementación ‘androidx.lifecycle:lifecycle-livedata-core-ktx:2.7 .0’ implementación ‘androidx.lifecycle:lifecycle-runtime-ktx:2.7.0’ implementación ‘android.arch.lifecycle:extensions:1.1.1’ }
Sincroniza tu proyecto y ???? auge???? Agregó NetworkStateObserver exitosamente. ❗
2. Uso
- Primero inicialice la clase de constructor:
val red = NetworkStateObserver.Builder() .actividad(actividad = this@NetworkStateObserverExample) .build()
- Si solo desea probar la conectividad, antes de ejecutar una tarea o trabajo():
if(CheckConnectivity.isNetworkAvailable(requireContext())){ showToast( this@NetworkStateObserverExample, “Red restaurada”) }
- Utilice el método de datos en vivo para determinar el estado de su red y reemplace el código en lifecycleScope.launchWhenStarted {….su código aquí} para hacer lo que desee:
network.callNetworkConnection().observe(this) { isConnected -> lifecycleScope.launch(Dispatchers.IO) { if (isConnected) { cuando { Reachability.hasServerConnected( contexto = this@NetworkStateObserverExample, serverUrl = “https://www.your -server-url.com” ) -> lifecycleScope.launch{ showToast( “La URL del servidor está funcionando”) } Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launch{ showToast( “Red restaurada”) } else – > lifecycleScope.launch{ showToast( “La red se perdió o hay problemas con el servidor”) } } } else { //verifique la conexión perdida lifecycleScope.launch{ showToast( “No hay conexión de red”) } } } } }
- Utilice el método de flujo para determinar el estado de la red y vuelva a intentarlo cuando se produzca una excepción:
lifecycleScope.launch { network.callNetworkConnectionFlow() .observe() .collect { cuando (it) { NetworkObserver.Status.Available -> { lifecycleScope.launch { cuando { Reachability.hasServerConnectedFlow( contexto = this@NetworkStateObserverExample, serverUrl = “https: //www.github.com” ).retryWhen { causa, intento -> if (la causa es IOException && intento 3) { retraso(2000) return@retryWhen true } else { return@retryWhen false } }.buffer().first () -> lifecycleScope.launch { showToast( this@NetworkStateObserverExample, “La URL del servidor está funcionando”) } Reachability.hasInternetConnectedFlow( contexto = this@NetworkStateObserverExample ).retryWhen { causa, intento -> if (la causa es IOException && intento 3) { delay(2000) return@retryWhen true } else { return@retryWhen false } }.buffer().first() -> lifecycleScope.launch { showToast( this@NetworkStateObserverExample, “Red restaurada”) } else -> lifecycleScope launch. showToast( this@NetworkStateObserverExample, “Red perdida o problemas con el servidor”) } } } } NetworkObserver.Status.Unavailable -> { showToast( “¡La red no está disponible!” ) } NetworkObserver.Status.Losing -> { showToast( “Estás perdiendo su red!” ) } NetworkObserver.Status.Lost -> { showToast( “¡La red está perdida!” ) } } } }
- Puedes verificar si tu conexión a Internet es estable solo si no tienes una URL de servidor:
network.callNetworkConnection().observe(this) { está conectado -> lifecycleScope.launch(Dispatchers.IO) { si (isConnected) { cuando { Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launchW{ showToast( “Red restaurado”) } else -> lifecycleScope.launch{ showToast( “Problemas de red o servidor perdidos”) } } } else { //verificar si hay conexión perdida lifecycleScope.launch{ showToast( “Sin conexión de red”) } } } } }
3. ¿También puedes inyectar NetworkStateObserver y usarlo en todas partes de tu aplicación con Hilt???? :
- Cree un objeto para NetworkStateModule en su paquete:
@Module @InstallIn(ActivityComponent::class) object NetworkStateModule { @Provides fun provideNetworkStateObserver( actividad: Actividad): NetworkStateObserver { return NetworkStateObserver.Builder() .actividad(actividad = actividad) .build() } }
- Declara la variable en tu clase como fragmento o actividad, funciona en ambos:
@AndroidEntryPoint clase myFragment: Fragment(){ @Inject lateinit var network: NetworkStateObserver callNetworkConnection() divertido privado { network.callNetworkConnection().observe(this) { isConnected -> lifecycleScope.launch(Dispatchers.IO) { if (isConnected) { cuando { Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launch{ showToast( “Red restaurada”) } else -> lifecycleScope.launch{ showToast( “Red perdida o problemas con el servidor” ) } } } else { // comprobar la conexión perdida lifecycleScope.launch{ showToast( “Sin conexión de red”) } } } } } } anular fun onResume() { super.onResume() callNetworkConnection() } }
- Agrega el método en onResume() de tu fragmento o actividad para obtener una experiencia óptima:
reemplazar divertido onResume() { super.onResume() callNetworkConnection() }
???? No dudes en darme una estrella ????, a mí también me encanta la brillantina ✨ ☺️