[英]How to manage 100s of firebase queries
我有一個 Android 應用程序,與任何其他 android 應用程序一樣,我必須填寫要從 Firebase 實時讀取數據的數據,現在我已經注意到每次查詢都增長到超過 100 條數據。將 ValueEventListeners 添加到引用中。 為了避免使用冗長的引用,我創建了一個 static 常量 class 來存儲所有引用。 例子
public class Constants {
public static final String THUMB_URL= "https://www.qualcomm.com/sites/ember/files/styles/scale_480/public/components/two-column-hdi/side/blue-ai-inception-badge-updated-2.png?itok=cOkbug7y";
public static final FirebaseUser CURR_USER= FirebaseAuth.getInstance().getCurrentUser();
public static final String UID= FirebaseAuth.getInstance().getCurrentUser().getUid();
public static final DatabaseReference ROOT_REF=FirebaseDatabase.getInstance().getReference();
public static final DatabaseReference QUIZ_REF=ROOT_REF.child("quizzes");
public static final DatabaseReference QUIZ_HOF_REF=QUIZ_REF.child("hof");
public static final DatabaseReference QUIZ_HOF_Q_REF=QUIZ_HOF_REF.child("questions");
public static final DatabaseReference QUIZ_HOF_TOTQ_REF=QUIZ_HOF_REF.child("totalQuestions");
public static final DatabaseReference SCORECARD_REF=ROOT_REF.child("scorecards");
public static final DatabaseReference SCORECARD_UID_REF=SCORECARD_REF.child(UID);
//Similar declarations
}
現在要進行查詢,我創建了一個 Class 和 static 函數,它利用了這些引用。 例子
public final class MyUtilsApp {
public static void queryByQuestionNumber(String quizName, String questionNumber) {
Query query = Constants.QUIZ_REF.child(quizName).child("questions")
.orderByChild("questionNumber").equalTo(questionNumber).limitToFirst(1);
query.addChildEventListener(new ChildEventListener() {..});
}
public static void queryAllQuestions(String quizName){
Query query=Constants.QUIZ_REF.child(quizName).child("questions").orderByChild("questionNumber");
query.addChildEventListener(new ChildEventListener() {..});
}
public static void upgradeScore(String quizName){
DatabaseReference reference=Constants.SCORECARD_UID_REF.child("score");
reference.addListenerForSingleValueEvent(new ValueEventListener(){...});
}
//Similar Functions
}
現在回到這個問題,在管理 Android 中的查詢時,這到底是對還是錯。 特別是當查詢增長超過 50 時?
如果你使用這個沒有問題,但我建議使用 AsyncTask() 以確保所有查詢不會同時被查詢!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.