Объект, возвращенный createUserWithEmailAndPassword
, является Task<AuthResult>
, который я мог бы установить для обратного вызова onSuccess
или onFailure
; но главная проблема в том, что мне нужна основная тема здесь: wait, чтобы завершить процесс до перехода к следующему этапу процесса. Созданная часть работает, но когда поток завершается, объект «Задача» говорит, что успех является ложным и возвращается, что также меня смущает, так как он успешно создал пользователя.Java Thread ждет навсегда в Async Task
if (firebaseAuth.getCurrentUser() == null) {
final Task<AuthResult> resultTask = firebaseAuth.createUserWithEmailAndPassword(
"[email protected]",
"tester1234");
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while(!resultTask.isComplete()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
thread.join(10000);
if(!resultTask.isSuccessful())
return false;
}
И пытается этот метод ниже только висит на неопределенный срок:
if (firebaseAuth.getCurrentUser() == null) {
final CountDownLatch countDownLatch = new CountDownLatch(1);
firebaseAuth.createUserWithEmailAndPassword(
"[email protected]",
"test1234")
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
countDownLatch.countDown();
}
});
countDownLatch.await();
}
где вы запускаете/выполняете свою задачу? –
Если вы не запускаете свою задачу, она никогда не будет завершена, имеет смысл WDYT? –
@NicolasFilotto задание запускается 'createUserWithEmailAndPassword' – nuebKitsune