Код, который вы используете в методе onComplete
, часто вызывается после того, как ваш метод возвращается, когда ваша задача завершена.В вашем коде вы просто присоединяете слушателя, его можно вызвать намного позже или даже вообще не вызывать.
У вас есть много опций, например Future , или присоединение обратного вызовавашему слушателю (так что слушатель вызывает обратный вызов после его завершения).
task.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful())
{
if(task.getResult().isEmpty())
{
count[0] = 0;
Log.d("counter",String.valueOf(count[0]));
}
else {
Log.d("counter is",String.valueOf(task.getResult().size()));
count[0] = task.getResult().size();
}
methodWhenListenerCompletes(count[0]);
}
}
});
...
public void methodWhenListenerCompletes(int count) {
// do something
}