El arsenal de Android: redes

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 ✨ ☺️

Compruebe también

El viaje de un desarrollador hacia el respaldo predictivo (vistas)

El primer hito es actualizar a Kotlin 1.8.0 o posterior, lo cual es necesario para …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *