我正在使用Geofire API从FireBase DB中读取地理坐标列表,并且对于每个地理坐标,我正在阅读地理坐标的其他详细信息。
问题在于,使用FireBase异步设计方法在一个地理坐标上阅读有关用户的其他详细信息时会出现延迟。
所以发生的事情是没有为每个地理坐标执行onDataChange,而是为一个地理坐标执行。
我认为FireBase API会在循环和每个地理坐标中读取地理坐标列表,它会在onDataChange方法上启动但是使用onDataChange读取详细信息会有延迟,FireBase API不会等待并继续读取其他地理坐标。
任何对firebase db有经验的人都可以帮我解决这个问题。
geoQuery = geoFire.queryAtLocation(new GeoLocation(mCurrentLocation.getLatitude(),mCurrentLocation.getLongitude()),1.80);
markers = new HashMap<String, Marker>();
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
try {
ref.child("user").child(key).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
user= dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
{
@Override
public void onCancelled(DatabaseError error) {
}
});
return true;
}
});