Я создаю свое первое приложение для Android, которое является клоном Tinder только для учебных целей.
Я пытаюсь реализовать способ постоянной проверки изменений в базе данных Firebase, который будет работать в фоновом режиме при любом действии. например когда пользователь получает новое совпадение и БД обновляется, он получает всплывающее уведомление (в приложении).
Я думаю, может быть, есть какой-то слушатель, который мне нужно запускать в отдельном потоке и вставлять в каждое действие? Или просто поместите запрос БД в бесконечный цикл. Я не знаю, как лучше всего.
Извините, если это нубский вопрос, но я немного застрял и не знаю, как двигаться дальше с этим. Спасибо!
Только при использовании приложения. Под «в фоновом режиме» я подразумеваю, что пользователь не должен быть в определенной деятельности и может быть где угодно в приложении, например, в настройках своего профиля или в чате, и всплывающее окно все равно появится.
Чтобы добиться того, что вы сказали, вы должны использовать 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 вы можете получить нужные вам данные и сделать уведомление.
Спасибо, похоже, это именно то, что нужно. Я попробую это как можно скорее и дам отзыв.
Круто, это работает отлично. У меня были некоторые проблемы с путями, но в конце концов я понял это. Для дальнейшего использования: DatabaseReference dbref = FirebaseDatabase.getInstance().getReference().child("Matches").child(key); И чтобы получить идентификатор дочернего элемента: dataSnapshot.child("MatchID").getValue().toString()
Добро пожаловать @robliv. Если вы не возражаете, не могли бы вы проголосовать за мой ответ и отметить его как принятый. Рад, что смог помочь.
Вы хотите, чтобы приложение также получало изменения базы данных, когда приложение закрыто, или только когда пользователь его использует?