更新所有用户Firebase的UI

时间:2018-10-26 01:26:13

标签: java android firebase interface

现在,我有了它,以便当游戏中的用户创建打开的游戏时,会弹出一个带有加入按钮和有关游戏的信息的界面,这非常有用。我通过RecylclerView做到了这一点,并且效果很好。但是,这只会更新创建打开游戏的用户的屏幕。

我正在使用实时数据库存储打开的游戏信息,并且该信息通过更新的界面显示。但是,如何使它更新该特定页面上的每个用户的屏幕呢?

我将使用Firebase中的哪个功能来执行类似的操作?我只是一个起点,我可以在那里进行研究!我以为Firebase Hosting是我需要使用的,但是我想听听你们的一些建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

我想在多人游戏模式下使用Firebase RealtimeDatabase。

首先,您需要一个玩家来创建游戏,就像

    roomDB = FirebaseDatabase.getInstance().reference.child("Rooms").child(roomNumber)

然后设置孩子的值。

然后您需要同一个游戏室中的每个人都listen来更改数据库引用。

您可以选择以下选项之一:

roomDB.addChildEventListener(...)听听孩子的变化。

roomDB.addListenerForSingleValueEvent(...)仅一次获得其价值。

roomDB.addValueEventListener(...)收听其值,直到.removeEventListener(...)

我正在使用addValueEventListener在播放器之间同步数据。大约有0.5〜1秒的延迟。并记得在游戏结束时removeEventListener

最后,仅供参考, 您可能想要查看Firebase的Transaction类。这可以保证您的玩家不会在同一时间将数据写入同一位置。例如:确保4人游戏中不会有5人。

---更新-

final DatabaseReference playersDB = FirebaseDatabase.getInstance().getReference()
            .child("Rooms") // end here if you want to listen to all rooms
            .child(roomId)  // end here if you want to listen to THIS room
            .child("Players"); // I end here because I only want players' data
playersDB.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot ds) {
         // update UI here;
         }
 }