Является ли Firebase для Android поток безопасным? - PullRequest
0 голосов
/ 12 сентября 2018

Этот вопрос очень очевиден, но в документации Google нет однозначного ответа, и у меня возникли проблемы с его проверкой

Позвольте мне описать сценарий:

1- I 'база данных, которая просто позволяет аутентифицированным пользователям запрашивать
2- я аутентифицирую пользователей самостоятельно, но я пользователь firebase, чтобы назначить им токен
3 - в то время как firebase назначает токен пользователю, другой поток может начать запрашивать

Код:

//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 голосов
/ 12 сентября 2018

signInWithCustomToken является асинхронным и возвращает задание, указывающее, когда оно завершено.Ваш код должен дождаться выполнения этой задачи, прежде чем выполнять запросы, требующие аутентификации.То, что вы написали прямо сейчас, не будет работать так, как вы ожидаете, потому что аутентификация не будет завершена до выполнения запроса.

Проблема здесь не в безопасности потоков.Вам просто нужно правильно выполнять асинхронное программирование с задачами.

Подробнее об API задач Play Services. Подробнее об использовании задач с Firebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...