Firebase for Android线程安全吗?

时间:2018-09-12 16:13:23

标签: android firebase firebase-realtime-database firebase-authentication

这个问题非常明显,但是google文档没有一个直接的答案,我无法对其进行测试

让我描述一下情况:

1-我有一个数据库,只允许经过身份验证的用户查询
2-我自己对用户进行身份验证,但我使用Firebase用户为他们分配令牌
3- Firefire将令牌分配给用户时,其他线程可能会开始查询

代码:

//do my stuff to authenticate
//....
//....
FirebaseAuth.getInstance().signInWithCustomToken(token);
 DatabaseReference fire = ((App) getApplication()).getFirebase();
fire.child("actions").orderByChild("added").startAt(from).addListenerForSingleValueEvent(new ValueEventListener(){/*do my stuff*/});

因此,在调用signInWithCustomToken之后,我将始终只进行查询,但是在开始查询之前,我不会等待其结果... firebase是否在内部对其进行同步?

1 个答案:

答案 0 :(得分:1)

signInWithCustomToken是异步的,并返回一个Task指示完成时间。在执行需要身份验证的查询之前,您的代码需要等待该任务完成。您现在写的内容无法按预期方式运行,因为在执行查询之前身份验证尚未完成。

这里的问题不是线程安全。您只需要正确地对Tasks进行异步编程即可。

Read about the Play Services tasks API. Learn more about using Tasks with Firebase.