Как проверить подключение к интернету в Asynctask и если его нету, загрузить данные из BD (Room)

Всем привет. Вообщем, мне нужно создать приложение, которое парсит данные из интернета через AsyncTask, записывает их в Room и выводит в активность. В случае отсутствия интернета, данные берутся из БД. Собственно, как можно реализовать проверку подключения к интернету и выгрузку из БД? Может есть какие-то методы? (Android dev занимаюсь всего месяц, и только - только познакомился с БД и AsyncTask)


Ответы (1 шт):

Автор решения: ЮрийСПб

AsyncTask - устарел. Используйте что-то другое. RxJava, Coroutines из Kotlin или средтсва библиотек для сетевых запросов не на главном потоке (OkHttp такое предоставляет, в т.ч. через LiveData). Аналогично и для запросов в БД - они могут с вышеперечисленным работать.

Проверять наличие интернета в реальной жизни сложно и обычно не нужно. Единственный относительно рабочий способ - постоянно запрашивать какой-то сайт, хотя бы и DNS гугла, рассчитывая, что эта злобная компания не уронит его однажды, лишив вас и этого способа проверки наличия сети.

Сама ОС даёт лишь возможность проверить есть ли соединение с к-л сетью, не давая информации, есть ли там соединение с интернетом.

В итоге у вас всего один нормальный вариант - делать запрос в сеть и, если он с ошибкой завершился сетевой - брать данные из БД.

→ Ссылка