我正在尝试将一些数据存储在Firebase中,但是我添加的侦听器无法正常工作。奇怪的是,有时它可以工作,而有时却不能,并且代码保持不变。这是Firebase问题,我的设备问题还是我的代码问题?
我尝试使用onDataChange()和onCancelled()方法内的断点调试应用程序,但未达到断点,但是方法addFestivalsListener()返回了侦听器对象,并且它不是null。 另外,将创建对Firebase的引用,并正确添加侦听器。
数据库结构类似于this。
private ValueEventListener addedFestivalsListener(){
ValueEventListener addedListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
allFestivals.clear();
for (DataSnapshot festSnapshot : dataSnapshot.getChildren()){
Festival f = festSnapshot.getValue(Festival.class);
allFestivals.add(f);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
return addedListener;
}
dRef = FirebaseDatabase.getInstance().getReference().child("festivals");
dRef.addValueEventListener(addedFestivalsListener());
我在Logcat中获得的唯一信息是这样的消息:addedFestivalsListener()的验证花费了106.237ms
我添加了一个侦听器以验证与Firebase的连接,并且输出如下所示:
2019-05-30 17:12:44.023 30517-30517/? D/FestivalsFragment: onDataChange: not connected
2019-05-30 17:22:02.492 30517-30517/? D/FestivalsFragment: onDataChange: connected
2019-05-30 17:22:02.492 30517-30517/? D/FestivalsFragment: onDataChange: connected
2019-05-30 17:22:05.922 30517-30517/? D/FestivalsFragment: onDataChange: not connected
2019-05-30 17:22:05.923 30517-30517/? D/FestivalsFragment: onDataChange: not connected
2019-05-30 17:48:42.819 30517-30517/? D/FestivalsFragment: onDataChange: connected
2019-05-30 17:48:42.819 30517-30517/? D/FestivalsFragment: onDataChange: connected