Записывать данные firebase, когда пользователь не подключен к Интернету

Я хочу обновить базу данных Firebase, когда пользователь не подключен к Интернету. Это похоже на то, что вы находитесь в приложении, и вы закрываете интернет-соединение, теперь вы закрываете приложение. Поэтому я использую LifeCycleObserver, чтобы определить, находится ли приложение на переднем плане или в фоновом режиме. Я хочу установить статус пользователя в автономном режиме, когда onStop вызывается в моем классе приложения. Когда подключение к Интернету включено, оно работает отлично.

Я пробовал OnDisconnect().setValue(-), но он не работает. Может ли кто-нибудь помочь мне решить эту проблему?

userDatabase.child(AppConstants.USER_IS_ONLINE).onDisconnect().setValue(status,object :  DatabaseReference.CompletionListener{
            override fun onComplete(p0: DatabaseError?, p1: DatabaseReference) {
                Log.d("Success","YES")
            }

        })

Когда ты звонишь onDisconnect()? Имейте в виду, что вы должны вызвать это, когда пользователь является подключился к серверу, иначе клиент не сможет отправить эту инструкцию на сервер.

Frank van Puffelen 27.05.2019 16:42

Я вызываю onDisconnect(), когда приложение находится на переднем плане и в фоновом режиме оба раза. При включенном интернет-соединении все работает нормально.

Rohit Singh 28.05.2019 07:43

Спасибо за вашу помощь @Frank van Puffelen и Alex Mamo. Я решил эту проблему. Еще раз спасибо Фрэнку ван Паффелену, что ваш пункт «вы должны вызывать это, когда пользователь подключен к серверу» щелкнул в моей голове. теперь он работает отлично. OnDisconnect вызывается, когда наше приложение подключается к серверу. Следующая проблема, с которой я столкнулся, как вернуть пользователя в сеть, когда у меня снова появился интернет, для которого я использовал график работы. Теперь все работает нормально, спасибо, ребята

Rohit Singh 28.05.2019 10:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
367
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

I want to update firebase database when user is not connected to internet.

Вы не можете сделать это. Поскольку между устройством пользователя и серверами Firebase нет интернет-соединения, вы не можете ничего обновить. Подключение к Интернету обязательно для доступа к серверной части Firebase.

Пользователь может отключиться от базы данных Firebase двумя способами. Для этого см. Ответ Франка ван Пуффелена из следующего сообщения:

В сообщении выше он упомянул: «В случае чистого отключения ваши обработчики onDisconnect немедленно сработают, и, таким образом, ваша база данных будет немедленно обновлена». но я использую onDisconnect(). все равно не работает??

Rohit Singh 27.05.2019 12:39

Да, в случае чистого отключения сработают обработчики onDisconnect. Если обработчики не сработают, значит у вас не чистый дисконнект, верно?

Alex Mamo 27.05.2019 12:47

Другие вопросы по теме