#android #user-interface #networking #cellular-network
#Android #пользовательский интерфейс #сеть #сотовая сеть
Вопрос:
Описание проблемы:
У меня есть приложение, которое использует Firebase (служба аутентификации, хранилище firestore и firebase, crashlitycs и т. Д.). В функциях, где требуется доступ в Интернет, например, при входе пользователя в систему, я использую этот метод, чтобы определить, есть ли подключение к Интернету:
fun isNetworkAvailable(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetworkInfo = connectivityManager.activeNetworkInfo
return activeNetworkInfo != null amp;amp; activeNetworkInfo.isConnected
}
В Android Studio все работает нормально. Но когда пользователь с реальным устройством отправляется в область, где сеть обычно отключена, а уровень сигнала GPS низкий (например, в лесу), приложение продолжает зависать и сбой с различными исключениями. Проблема возникает даже во время действий, когда Интернет вообще не требуется (например, для съемки, просмотра каталога). Как я мог воспроизвести это в эмуляторе Android Studio?
Что я пробовал до сих пор:
- Я попытался установить высокую задержку (10-20 секунд) и низкую скорость (1-2 КБ / с) для эмулятора с
-netdelay
и-netspeed
переключателями при запуске с консоли. - Я попытался поиграть с опциями сотовой связи эмулятора.
Ни один из вышеперечисленных методов не может воспроизвести зависающие экраны, с которыми сталкиваются пользователи в лесах или горах. Без возможности отладки я не смог выяснить, что замораживает поток пользовательского интерфейса. Есть идеи, что я мог бы сделать?
Ответ №1:
Похоже, что зависание / сбой связаны с GPS, а не с сетью. Что сработало для меня, так это то, что я ездил по городу, пока не нашел поблизости гараж, в котором не было сигнала GPS.
Кроме того, вам обязательно следует добавить Firebase Crashlytics, чтобы вы могли получать отчеты о сбоях при возникновении этих событий.
Комментарии:
1. Я удалил реализацию LocationListener из приложения, но проблема все еще возникла. Это было единственное место, где я использовал GPS. Возможно ли, что firebase пытается получить некоторые данные о местоположении в фоновом режиме, и каким-то образом это приводит к зависанию / сбою пользовательского интерфейса?
2. Невозможно сказать без каких-либо отчетов о сбоях или без просмотра всей базы кода.