我目前正在测试Firebase以及我打算在整个应用程序的生命周期中使用的Singleton模型.我现在已经陷入了一些似乎非常微不足道的事情,但我无法理解我的生活.我有一个我使用的模型示例:firebase中的书签.
public class BookSingleton {
private static BookSingleton model;
private ArrayList<BookMark> bookmarks = new ArrayList<BookMark>();
public static BookSingleton getModel()
{
if (model == null)
{
throw new IllegalStateException("The model has not been initialised yet.");
}
return model;
}
public ArrayList<Bookmark> theBookmarkList()
{
return this.bookmarks;
}
public void setBookmarks(ArrayList<Bookmark> bookmarks){
this.bookmarks = bookmarks;
}
public void loadModelWithDataFromFirebase(){
Firebase db = new Firebase(//url);
Firebase bookmarksRef = fb.child(//access correct child);
final ArrayList<Bookmark> loadedBookmarks = new ArrayList<Bookmark>();
bookmarksRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用通过Firebase连接的对等方获取的数据来更新我的Android应用中的WebView部分.为此,执行将返回所需数据的阻塞操作可能会有所帮助.例如,Chat示例的实现将等待另一个聊天参与者在push.setValue()返回之前写入某些内容.Firebase可以实现这样的行为吗?
我在我的Android应用程序中的一个单独的线程中使用Cloud Firestore,所以我不想使用侦听器OnSuccessListener并OnFailureListener在另一个线程中运行.我可以让我的线程等待结果(并在需要时捕获任何异常)吗?
目前查询代码是这样的:
FirebaseFirestore.getInstance().collection("someCollection").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
// do something on the UI thread with the retrieved data
}
});
Run Code Online (Sandbox Code Playgroud)
我想要的是:
FirebaseFirestore.getInstance().collection("someCollection").getAndWaitForResult();
//Block the thread and wait for result, no callbacks.
//getAndWaitForResult() is not a real function, just something to describe my intention.
Run Code Online (Sandbox Code Playgroud)
我之前曾经使用过Parse Server,而且它在那里非常简单.