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();
- Calibre o intervalo de verificação considerando o impacto na bateria e a criticidade da conectividade.
- Prefira servidores de verificação geograficamente próximos ou internos à sua infraestrutura para maior confiabilidade.
- Ajuste o tempo limite (
timeout) de acordo com a qualidade média da rede alvo (móvel, Wi-Fi). - Utilize manipuladores de erro (
errorHandler) para registrar falhas ou implementar lógicas de recuperação específicas.