Страницы

Поиск по вопросам

среда, 11 декабря 2019 г.

Оптимальный подход проверки интернет подключения в сетевом приложении

#java #android #retrofit


Хотелось бы узнать как оптимальней всего будет реализовать проверку интернет соединения
в сетевом приложении.
Я использую Retrofit2, каждых n секунд мне необходимо опрашивать сервер. 

реализую okhttp3.Interceptor

@Override
    public Response intercept(Chain chain) throws IOException {
    if (!NetworkUtils.isNetworkAvailable(mContext)) {
            throw new NetworkException();
        }
}


когда выполняю запрос на сервер,  retrofit2. Callback в методе обратного вызова
onFailure(Call call, Throwable t) проверяю  if (t instanceof NetworkException) 
то единожды вывожу сообщение о отсутствии интернет соединения. 

Но меня смущает то, что при кажом опросе сервера мне необходимо выполнять проверку
isNetworkAvailable, в которой
"дергать" ConnectivityManager getActiveNetworkInfo(), проверять instanceof в onFailure()....
поэтому я не уверен в том что это наилучший подход.

Подход с определением broadcastreceiver`a, слушающего события изменения статуса сети
мне кажется более оптимальным, 
событиеориентированным, но он считается deprecated. 
Поэтому хотелось выяснить, как реализовать проверку интернет соединения наиболее
оптимально.
    


Ответы

Ответ 1



Самое лучшее решение: перестать изобретать велосипеды и части операционной системы. Пользователь сам знает что у него есть. Просто делайте свою работу, ради чего приложение написано. Если есть сеть, то это еще не значит, что ваш хост доступен, к примеру, из-за перегруженности сети. Просто напишите сообщение "Не могу сконнетиться" и все. До кучи на один пермишшен меньше. Если опрашиваете какой-то ресурс с высокой частотой, то самое время сменить рабобязательно корректно обрабатывайте ошибки и говорите пользователю. Можно даже сделать настройку вида "При проблемах с обновлением: остановиться / продолжать 1 минуту / продложать всегда". Как и когда сеть появится, что нужно сделать - ЭТО НЕ ВАШЕ ДЕЛО, пользователь и его ОС сами это решат, а подобные велосипеды лишь приводят к тому, что надо будет передергивать подключения/проводки/выходить и заходить.

Комментариев нет:

Отправить комментарий