2017-09-03 54 views
1

现在我正在开发一个Android应用程序,并且我刚开始使用Firebase。如何在没有侦听器的情况下从Firebase数据库检索数据?

我的问题是:如何从Firebase数据库检索数据,而不使用侦听器?

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

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

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

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 

这个解决方案是不适合我,因为我无法承受我的应用程序进入每一次高分的用户正在改变服务器,因为如果我有20000人谁在同一时间玩,然后游戏将卡住。

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

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

什么是正确的解决方案?

或者我可以以另一种方式使用此侦听器吗?

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

谢谢!

我的台词:

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)); 


} 
+0

我们可以看到你的火力结构? – sabsab

+0

我没有真正的结构。我只有一些代码行,这就是每个用户的高分。然后我需要做的唯一事情就是检索它们。我将添加我的单行。 –

+0

你试过我的回答吗? – sabsab

回答

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

+0

谢谢!那么这个监听器何时会被调用?我打开具体活动时需要他来电。我可以这样做吗? –

+0

是的,只是把它放在oncreate函数中 – sabsab

1

如果你鸵鸟政策需要实时更新,你总是可以做一个REST API调用数据库。 只是做一个GET调用来检索数据

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

,你是好去 您还可以更新或创建使用REST API调用新的密钥。

+0

我不明白。你可以解释吗 ?或给我链接解释? –

+0

您可以在这里查看更多信息https://firebase.google.com/docs/reference/rest/database/ – hacksy

相关问题