Android 需要Firebase线程的状态
我使用的是Firebase,在登录屏幕中,我有一个方法,当用户输入正确的登录凭据时调用该方法(该方法启动Firebase线程以获取主屏幕所需的所有信息),当主屏幕打开时,我需要等待该方法完成,我需要某种标志或其他东西,让我向您粘贴我的代码: Login.java:Android 需要Firebase线程的状态,android,multithreading,firebase,firebase-authentication,Android,Multithreading,Firebase,Firebase Authentication,我使用的是Firebase,在登录屏幕中,我有一个方法,当用户输入正确的登录凭据时调用该方法(该方法启动Firebase线程以获取主屏幕所需的所有信息),当主屏幕打开时,我需要等待该方法完成,我需要某种标志或其他东西,让我向您粘贴我的代码: Login.java: mProgress.setMessage("Verificando Datos Usuario..."); mProgress.show(); mAuth
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);
}
}
});
我需要等待完成才能在类Taxifirebase.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) {
}
});
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);
}
}
公共静态无效载货出租车(列表chapas){
用于(字符串chapa:chapas){
DatabaseReference taxiref=childRef.child(chapa);
taxref.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
滑行=dataSnapshot.getValue(滑行.class);
Sesion.taxis.add(出租车);
}
}
提前感谢。如果该标志为,您可以使用该类
如果需要程序逻辑,请使用布尔值,并在需要时更改为
true
。稍后您可以检查值。我需要它作为逻辑,我需要线程完成,以便将数据包含在主类中,如果我使用简单的布尔值,则不能在线程之外加入。如果是布尔值,则不需要布尔值在线程内部,您必须阅读java访问修饰符+关于类和POO的知识,您可以在程序或应用程序中创建可用的标志