发送返回语句(获取数据后)到父布尔方法?

时间:2019-07-13 21:46:02

标签: android boolean return-value

我有一个问题,我的数据获取正在另一个线程上运行,而剩下的代码要执行。有没有一种方法可以在onDataChanged方法内部使用return语句来返回布尔父方法? 反对创建两个线程,让一个线程等待另一个线程。

else {
        databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot businessSnapshot : dataSnapshot.getChildren()) {
                    final String tempBus = businessSnapshot.getKey();
                    Log.d("myTagEmails", "Business is: " + tempBus);
                    childReference = databaseReference.child(tempBus).child("z_businessLogin").child("email");
                    childReference.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            String tempEmail = dataSnapshot.getValue(String.class);
                            Log.d("myTagEmails", "Email is: " + tempEmail);
                            if (tempEmail.equalsIgnoreCase(email)) {
                                return false; //I would like to use this for the parent boolean method
                            } else {
                                Log.d("myTagEmails", "does not match");
                                return true; // or this one
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });

     }

1 个答案:

答案 0 :(得分:0)

无法在监听器中返回

要解决此顺序调用问题,可以尝试以下方法之一:

  • 使用Observer-pattern对象类型(例如Observable或LiveData)来保持第一个任务的状态。当第一个任务完成时,它会更改状态对象的值,然后该对象将通知观察者,以便他们知道何时执行第二个任务

  • 定义一个具有onDone()回调方法的侦听器接口,在要调用第二个任务的地方实现它,将其实例传递给第一个任务,触发onDone()