gpt4 book ai didi

android - 如何在没有监听器的情况下从 Firebase 数据库中检索数据?

转载 作者:搜寻专家 更新时间:2023-11-01 07:45:13 25 4
gpt4 key购买 nike

现在我正在开发一个 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));


}

最佳答案

这是在不监听数据变化的情况下检索数据一次的官方方式。

 // 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

关于android - 如何在没有监听器的情况下从 Firebase 数据库中检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com