Android firebase数据库中的异步侦听器 task1=firestore.collection(collection).document(city.collection(“Bigads”).get().addOnCompleteListener(新的OnCompleteListener()){ @凌驾 未完成的公共void(@NonNull任务){ if(task1.issusccessful()){ if(task1.getResult().isEmpty()){ }否则{ 对于(DocumentSnapshot文档:task.getResult()){ AdsModel ad=newadsmodel(docs.getString(“For”)、docs.getString(“ImageURL”)、docs.getString(“产品”)、docs.getString(“ShopUID”); Bdata.add(ad); homeMainAdapter.notifyDataSetChanged(); 最近显示所有.setVisibility(View.VISIBLE); rvd设置可见性(视图可见); 设置可见性(View.VISIBLE); end.setVisibility(View.VISIBLE); } } }否则{ } } });

Android firebase数据库中的异步侦听器 task1=firestore.collection(collection).document(city.collection(“Bigads”).get().addOnCompleteListener(新的OnCompleteListener()){ @凌驾 未完成的公共void(@NonNull任务){ if(task1.issusccessful()){ if(task1.getResult().isEmpty()){ }否则{ 对于(DocumentSnapshot文档:task.getResult()){ AdsModel ad=newadsmodel(docs.getString(“For”)、docs.getString(“ImageURL”)、docs.getString(“产品”)、docs.getString(“ShopUID”); Bdata.add(ad); homeMainAdapter.notifyDataSetChanged(); 最近显示所有.setVisibility(View.VISIBLE); rvd设置可见性(视图可见); 设置可见性(View.VISIBLE); end.setVisibility(View.VISIBLE); } } }否则{ } } });,android,firebase,asynchronous,google-cloud-firestore,Android,Firebase,Asynchronous,Google Cloud Firestore,在task2中,需要检查task1是否为空的条件是一个if条件。如果task2在task1之前运行,则两个侦听器都是异步的,那么if条件将变为true,结果将是错误的。如何处理此任务,以便task1应先运行,然后再运行task2 task2=firestore.collection(“用户”).document(uid).collection(“rvd”).get().addOnCompleteListener(新的OnCompleteListener()){ @凌驾 未完成的公共void(@N

在task2中,需要检查task1是否为空的条件是一个if条件。如果task2在task1之前运行,则两个侦听器都是异步的,那么if条件将变为true,结果将是错误的。如何处理此任务,以便task1应先运行,然后再运行task2

task2=firestore.collection(“用户”).document(uid).collection(“rvd”).get().addOnCompleteListener(新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()&&task1.getResult().isEmpty()){
对于(DocumentSnapshot文档:task.getResult()){
RvdModel r=新的RvdModel(doc.get(“image1”).toString()、doc.get(“ProductUID”).toString()、doc.get(“Brand”).toString());
Rdata.add(r);
rvdAdapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this,“working”,Toast.LENGTH_SHORT.show();
suggestionRView.setVisibility(View.VISIBLE);
suggest.setVisibility(View.VISIBLE);
建议显示所有.setVisibility(View.VISIBLE);
}
}否则{
Toast.makeText(MainActivity.this,“errorr”,Toast.LENGTH_SHORT.show();
}
}
});

您可以将您的
Task2
放入
Task1的
onComplete

Task task2= firestore.collection("user").document(uid).collection("rvd").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {


                if (task.isSuccessful() && task1.getResult().isEmpty()) {      



                    for (DocumentSnapshot doc : task.getResult()) {

                        RvdModel r = new RvdModel(doc.get("image1").toString(), doc.get("ProductUID").toString(), doc.get("Brand").toString());
                        Rdata.add(r);
                        rvdAdapter.notifyDataSetChanged();

                        Toast.makeText(MainActivity.this, "working", Toast.LENGTH_SHORT).show();
                        suggestionRView.setVisibility(View.VISIBLE);
                        suggest.setVisibility(View.VISIBLE);
                        suggest_show_all.setVisibility(View.VISIBLE);
                    }

                } else {
                    Toast.makeText(MainActivity.this, "errororr", Toast.LENGTH_SHORT).show();
                }
            }
        });
task1=firestore.collection(collection).document(city.collection(“Bigads”).get().addOnCompleteListener(新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
//在任务1成功时,做一些事情
//在确保task.getResult().isEmpty()之后在此调用task2。
if(task.getResult().isEmpty()){
任务task2=firestore.collection(“user”).document(uid).collection(“rvd”).get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
//做些事情。。。
}
}
}

尝试使用rx java,它将解决您的问题“寻求调试帮助的问题(“此代码为什么不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题说明的问题对其他读者没有用处。请参阅:请你用代码@gianhtrans解释一下,因为它是一个异步侦听器,我不知道如何处理任务@FrankvanPuffelen@user175799现在我给你一把钥匙,你应该先试试。如果你对RXJava没有基础,那很难理解。让我们试试吧
Task task2= firestore.collection("user").document(uid).collection("rvd").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {


                if (task.isSuccessful() && task1.getResult().isEmpty()) {      



                    for (DocumentSnapshot doc : task.getResult()) {

                        RvdModel r = new RvdModel(doc.get("image1").toString(), doc.get("ProductUID").toString(), doc.get("Brand").toString());
                        Rdata.add(r);
                        rvdAdapter.notifyDataSetChanged();

                        Toast.makeText(MainActivity.this, "working", Toast.LENGTH_SHORT).show();
                        suggestionRView.setVisibility(View.VISIBLE);
                        suggest.setVisibility(View.VISIBLE);
                        suggest_show_all.setVisibility(View.VISIBLE);
                    }

                } else {
                    Toast.makeText(MainActivity.this, "errororr", Toast.LENGTH_SHORT).show();
                }
            }
        });
  Task task1=  firestore.collection(collection).document(city).collection("Bigads").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {

     if (task.isSuccessful()) {
        // On task1 success do some stuff 
        // Call task2 here after ensure task.getResult().isEmpty().
     if (task.getResult().isEmpty()){
          Task task2= firestore.collection("user").document(uid).collection("rvd").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {

            if (task.isSuccessful()) {  
            // Do some stuff... 
            }
  }
 }