Слушайте изменения Firebase DB в фоновом режиме приложения Android

Я создаю свое первое приложение для Android, которое является клоном Tinder только для учебных целей.

Я пытаюсь реализовать способ постоянной проверки изменений в базе данных Firebase, который будет работать в фоновом режиме при любом действии. например когда пользователь получает новое совпадение и БД обновляется, он получает всплывающее уведомление (в приложении).

Я думаю, может быть, есть какой-то слушатель, который мне нужно запускать в отдельном потоке и вставлять в каждое действие? Или просто поместите запрос БД в бесконечный цикл. Я не знаю, как лучше всего.

Извините, если это нубский вопрос, но я немного застрял и не знаю, как двигаться дальше с этим. Спасибо!

Вы хотите, чтобы приложение также получало изменения базы данных, когда приложение закрыто, или только когда пользователь его использует?

Ishaan Javali 19.07.2019 18:33

Только при использовании приложения. Под «в фоновом режиме» я подразумеваю, что пользователь не должен быть в определенной деятельности и может быть где угодно в приложении, например, в настройках своего профиля или в чате, и всплывающее окно все равно появится.

robliv 19.07.2019 19:22
1
2
513
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Чтобы добиться того, что вы сказали, вы должны использовать ValueEventListener. Попробуйте код ниже:

DatabaseReference dbref = FirebaseDatabase.getInstance().getReference("Your path");

dbref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnaphsot dataSnaphsot){
        //There was a data change so make your pop-up notification.
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError){

    }
});

Используя ValueEventListener выше, вы будете получать уведомления каждый раз, когда будет происходить изменение пути к вашей базе данных Firebase, указанное dbref.

Затем в методе onDataChange вы можете получить нужные вам данные и сделать уведомление.

Спасибо, похоже, это именно то, что нужно. Я попробую это как можно скорее и дам отзыв.

robliv 19.07.2019 20:00

Круто, это работает отлично. У меня были некоторые проблемы с путями, но в конце концов я понял это. Для дальнейшего использования: DatabaseReference dbref = FirebaseDatabase.getInstance().getReference().child("Matches‌​").child(key); И чтобы получить идентификатор дочернего элемента: dataSnapshot.child("MatchID").getValue().toString()

robliv 19.07.2019 21:31

Добро пожаловать @robliv. Если вы не возражаете, не могли бы вы проголосовать за мой ответ и отметить его как принятый. Рад, что смог помочь.

Ishaan Javali 19.07.2019 21:33

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