【发布时间】:2016-11-22 12:37:11
【问题描述】:
所以我的问题说明了一切。在 onCreate 中,我试图查询对象,但我希望 UI 线程等到我完成对所有对象的查询,这样我就可以使用它们来创建我的用户可以看到的视图。有谁知道如何使用示例代码来做到这一点?
这是我的查询方式。
Firebase cardReference = mRef.child("aReference");
cardReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
CardModel fireBaseCard = dataSnapshot1.getValue(CardModel.class);
testCardModelArray.add(fireBaseCard);
cardStack.setCardModelIDInArrayList(fireBaseCard.getCardID());
}
setUpCardStack();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
希望大家帮忙!
【问题讨论】:
-
使用加载屏幕直到您完成查询?
-
您绝对不想冻结 UI 线程。那是用户体验的地狱,也是失去应用下载量的必经之路。使用某种加载机制(进度条、加载屏幕等)
-
你最好使用闪屏(活动)。请参阅此示例:androidhive.info/2013/07/…
-
试图让 UI 线程等待是一个坏主意(有关详细信息,请参阅 my answer here)。而是将您的想法从“首先我们获取数据,然后我们更新 UI”重新定义为“当我们获得日期时,我们更新 UI”。一个很好的例子可以在Firebase quickstart app for the database 中找到,但也可能在大多数其他 Firebase Android 教程中。
-
@LubomirBabev Splashscreen 通常是我想要的。
标签: android multithreading firebase firebase-realtime-database querying