Я использую Firebase и на экране входа у меня есть метод, который он вызывается, когда пользователь вводит правильные учетные данные (этот метод запускает поток Firebase, чтобы получить все Информация мне нужно для главного экрана), и когда главный экран открыл мне нужно ждать, пока этот метод отделки, мне нужен какой-то флаг или что-то, позвольте мне вставить вам мой код:Нужно состояние потока Firebase
Login.java:
mProgress.setMessage("Verificando Datos Usuario...");
mProgress.show();
mAuth.signInWithEmailAndPassword(usuario, pass)
.addOnCompleteListener(Login.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
Toast.makeText(Login.this, "Los Datos administrados no son correctos",
Toast.LENGTH_SHORT).show();
mProgress.dismiss();
} else{
Toast.makeText(Login.this, "Bienvenido... ",
Toast.LENGTH_SHORT).show();
AdminFirebase.loadAdmin(task.getResult().getUser());
mProgress.dismiss();
Intent intento=new Intent(Login.this, Principal.class);
startActivity(intento);
}
}
});
AdminFirebase.java:
public static void loadAdmin(FirebaseUser user){
DatabaseReference userRef=adminRef.child(user.getUid());
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Administrador administrador=dataSnapshot.getValue(Administrador.class);
Sesion.admin=administrador;
Sesion.admin.loadTaxis();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
метод, который я должен ждать до конца, чтобы запустить подмигнули на классе Taxifirebase.java:
public static void loadTaxis(List<String> chapas){
for (String chapa :chapas) {
DatabaseReference taxiref=childRef.child(chapa);
taxiref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Taxi taxi=dataSnapshot.getValue(Taxi.class);
Sesion.taxis.add(taxi);
}
}
Спасибо заранее.
Мне нужно это для логики, мне нужно, чтобы поток был закончен, чтобы иметь данные в основном классе, и если я использую простое логическое значение, он не может присоединиться к потоку. –
Тогда булев, вам не нужно булево внутри потока, вы должны прочитать о модификаторах доступа Java + знания о классе и POO, вы можете создать флаги, доступные в вашей программе или приложении – josedlujan