我试图在firebase中进行一个简单的测试并保存包含字符串和布尔值的hashmap,但是我无法保存数据,它永远不会被推送。 http://hastebin.com/qucocuqexe.cs
答案 0 :(得分:6)
Firebase将所有工作卸载到后台线程上。在JVM上运行时,事件将在单独的线程上触发,而不是在主线程上触发。在任何后台线程实际可以完成任何工作之前,您的简单测试应用程序可能正在完成。
您需要使用同步原语(例如信号量)来确保Firebase可以实际完成请求的操作。尝试等待setValue(...)
完成以下内容:
public static Firebase ref = new Firebase("https://shs-newspaper.firebaseio.com//").child("news");
public static void main(String[] args) {
final Semaphore semaphore = new Semaphore(0);
Map<String, Boolean> test = new HashMap<String, Boolean>();
test.put("Test", true);
ref.setValue(test, new Firebase.CompletionListener() {
@Override
public void onComplete(FirebaseError error, Firebase ref) {
semaphore.release();
}
});
ref.setValue(test);
semaphore.acquire();
}