Добавить слушателя Firestore для работы в любой деятельности - PullRequest
0 голосов
/ 15 апреля 2020

Я работаю над социальным приложением с рангами.

После того, как один пользователь нажал кнопку «Мне нравится» на своем телефоне, у меня появился пользователь, которому пришло уведомление о том, что он показывает AlertDialog на своем экране.

Я знаю, чтобы отобразить AlertDialog прослушивая документ об изменении в моей базе данных Firestore.

Я написал работающий код, который выглядит следующим образом:

private void popRankUpReturner(Context context, String OtherUserId){

    final CollectionReference colRef = db.collection("Users");

    colRef.addSnapshotListener(new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(@Nullable QuerySnapshot snapshots,
                            @Nullable FirebaseFirestoreException e) {
            if (e != null) {
                Log.w("TAG", "listen:error", e);
                return;
            }

            for (DocumentChange dc : snapshots.getDocumentChanges()) {
                popRankUp(context); ---> This one make the AlertDialog
            }

        }
    });

}

Затем я написал этот код в своем OnCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );

    setContentView( R.layout.activity_chat );

    getSupportActionBar().hide();

    db = FirebaseFirestore.getInstance();

    receiverID = getIntent().getExtras().getString( "ReceiverID" );
    popRankUpReturner(context, receiverID);

}

Проблема в том, что пользователь получает этот AlertDialog только тогда, когда он вводит это заданное c действие, поскольку оно находится в OnCreate.

Мой вопрос: как можно Я вызываю прослушивание изменений документа из любого действия в моем приложении, поэтому в тот момент, когда пользователь получил «лайк», он покажет AlertDialog независимо от активности или, по крайней мере, покажет, когда пользователь в действии уже и не только когда он входит в деятельность.

Спасибо

...