Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 需要Firebase线程的状态_Android_Multithreading_Firebase_Firebase Authentication - Fatal编程技术网

Android 需要Firebase线程的状态

Android 需要Firebase线程的状态,android,multithreading,firebase,firebase-authentication,Android,Multithreading,Firebase,Firebase Authentication,我使用的是Firebase,在登录屏幕中,我有一个方法,当用户输入正确的登录凭据时调用该方法(该方法启动Firebase线程以获取主屏幕所需的所有信息),当主屏幕打开时,我需要等待该方法完成,我需要某种标志或其他东西,让我向您粘贴我的代码: Login.java: mProgress.setMessage("Verificando Datos Usuario..."); mProgress.show(); mAuth

我使用的是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);
                                    }
                                }
                            });
我需要等待完成才能在类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的知识,您可以在程序或应用程序中创建可用的标志