【问题标题】:How to retrieve data from Firebase database without listeners?如何在没有侦听器的情况下从 Firebase 数据库中检索数据?
【发布时间】:2018-02-12 03:32:06
【问题描述】:

现在我正在开发一个 android 应用程序,并且我刚刚开始使用 Firebase。

我的问题是:如何在不使用侦听器的情况下从 firebase 数据库中检索数据?

在我的游戏中,我保存了所有用户的高分,当用户进入“排行榜”页面时,我需要从数据库中获取数据。

我看到了一些解决方案,这对我的情况不利。 其中之一是:

mRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String value = dataSnapshot.getValue(String.class);
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

这个解决方案对我不好,因为我无法承受每次用户高分变化时我的应用程序进入服务器,因为如果我有 20,000 人同时玩,那么游戏将卡住了。

所以我不能使用这个监听器,因为它会让游戏变得很慢。

我的目标是找到一种改变高分的方法,而不会提醒其他正在玩游戏的人,我的意思是我需要为每个用户更新他自己的分数,并且当用户转到“排行榜”页面,然后我才会去服务器。

这里的正确解决方案是什么?

或者我可以用其他方式使用这个监听器吗?

如果我的问题不清楚,请在评论中问我。

谢谢!!

我的台词:

 public static void setUserHighScoreToServer(Context context,boolean isClassic,int scoreNum)
{
    com.firebase.client.Firebase mRef;
    mRef= new com.firebase.client.Firebase("...");
    String name = InternalStorage.getUserName(context);
    String classic = "";
    if(isClassic)classic="Classic";
    else classic="Arcade";
    com.firebase.client.Firebase mRefChild = mRef.child(name+classic);
    mRefChild.setValue(String.valueOf(scoreNum));


}

【问题讨论】:

  • 我们可以看看你的 Firebase 结构吗?
  • 我没有真正的结构。我只有几行代码,把每个用户的高分放在一起。然后,我唯一需要对 firebase 做的就是检索它们。我将添加我的单行。
  • 你试过我的答案了吗?
  • 是的,我做到了。成功了!!!
  • 很高兴听到这个消息,请接受我的回答并点赞。

标签: android database performance firebase server


【解决方案1】:

这是在不监听数据更改的情况下检索一次数据的官方方法。

 // Add all scores in ref as rows 

scores.addListenerForSingleValueEvent( new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) {
        for (DataSnapshot child : snapshot.getChildren()) { 
            ... 
        } 
    }
}

更多信息在这里:https://firebase.google.com/docs/reference/android/com/google/firebase/database/DataSnapshot

【讨论】:

  • 谢谢!!那么这个监听器什么时候会被调用呢?当我打开特定活动时,我需要打电话给他。我可以这样做吗?
  • 可以,放在oncreate函数里就行了
【解决方案2】:

如果您不需要实时更新,您可以随时对您的数据库进行 Rest api 调用。 只需调用 GET 即可检索您的数据

https://[PROJECT_ID].firebaseio/[path].json

你可以走了 您还可以使用 rest api 调用更新或创建新密钥。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-09-08
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
相关资源
最近更新 更多