Configuração Personalizada do ReactiveNetwork: Detalhes do InternetObservingSettings

Diferentes cenários de aplicação impõem requisitos distintos no monitoramento de rede:

  • Aplicações com restrições de energia necessitam de intervalos de verificação mais longos.
  • Funcionalidades críticas podem exigir tempos de resposta mais curtos.
  • Utilização de servidores de verificação regionais ou internos pode ser obrigatória.
  • Protocolos e servidores de diagnóstico específicos podem ser requeridos.

A classe InternetObservingSettings suporta a criação via método estático create() para uma configuração padrão, ou através do padrão Builder com builder() para personalização.

Exemplo de Configuração Padrão vs. Personalizada:

// Configuração padrão do sistema
InternetObservingSettings cfgPadrao = InternetObservingSettings.create();

// Configuração personalizada via builder
InternetObservingSettings cfgPersonalizado = InternetObservingSettings.builder()
    .host("https://meu-servidor.com/status")
    .intervalo(4000)
    .tempoLimite(2500)
    .build();
  • initialInterval(int): Atraso inicial antes da primeira verificação. Valor padrão: 0 (milissegundos).
  • interval(int): Intervalo entre verificações subsequentes. Valor padrão: 2000 (milissegundos).
// Configuração para economia de bateria
InternetObservingSettings cfgEficiente = InternetObservingSettings.builder()
    .initialInterval(5000)
    .interval(60000) // Uma verificação por minuto
    .build();
  • host(String): URL do servidor para verificação de conectividade. Padrão: "http://clients3.googlle.com/generate_204".
  • port(int): Porta do servidor de verificação. Padrão: 80.
// Utilizando um endpoint interno da empresa
InternetObservingSettings cfgCorporativo = InternetObservingSettings.builder()
    .host("https://intranet.minhaempresa.com/ping")
    .port(443)
    .build();
  • timeout(int): Tempo máximo de espera por uma resposta. Padrão: 2000 (milissegundos).
  • httpResponse(int): Código de status HTTP esperado para uma verificação bem-sucedida. Padrão: 204 (No Content).
// Exigindo resposta HTTP 200 com timeout agressivo
InternetObservingSettings cfgRapido = InternetObservingSettings.builder()
    .timeout(1000)
    .httpResponse(200)
    .build();
  • errorHandler(ErrorHandler): Define um manipulador personalizado para erros durante a verificação.
  • strategy(InternetObservingStrategy): Especifica a estratégia de verificação (ex.: baseada em socket HTTP).
// Implementação personalizada de estratégia e tratamento de erros
InternetObservingSettings cfgAvancado = InternetObservingSettings.builder()
    .errorHandler(new MeuManipuladorErros())
    .strategy(new EstrategiaSocket())
    .build();

Cenário de Baixo Consumo de Energia:

InternetObservingSettings configuracaoEcologica = InternetObservingSettings.builder()
    .interval(30000) // Intervalo longo
    .timeout(8000)   // Tolerância a redes lentas
    .build();

ReactiveNetwork.checkInternetConnectivity(configuracaoEcologica)
    .subscribe(statusConexao -> {
        // Atualizar UI ou lógica baseada no status
    });

Cenário de Monitoramento Intensivo:

InternetObservingSettings configuracaoIntensiva = InternetObservingSettings.builder()
    .initialInterval(0)
    .interval(500)
    .timeout(500)
    .httpResponse(200)
    .build();
  1. Calibre o intervalo de verificação considerando o impacto na bateria e a criticidade da conectividade.
  2. Prefira servidores de verificação geograficamente próximos ou internos à sua infraestrutura para maior confiabilidade.
  3. Ajuste o tempo limite (timeout) de acordo com a qualidade média da rede alvo (móvel, Wi-Fi).
  4. Utilize manipuladores de erro (errorHandler) para registrar falhas ou implementar lógicas de recuperação específicas.

Tags: RxJava android ReactiveNetwork InternetObservingSettings Network Monitoring

Publicado em 7-14 17:27