2017-05-07 69 views
0

我开发了使用Google地图和Firebase数据库的应用程序。在地图上长按,我将LatLng保存在Firebase DB中;Firebase onChildAdded()事件有时/空闲时间后未触发

// code to save latlng to DB 
    mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 
     @Override 
     public void onMapLongClick(LatLng latLng) { 
      mDatabaseReference.push().setValue(latLng); 
     } 
    }); 

这会导致Firebase触发器通知通过onChildAdded()添加了一个子事件。

if (mChildEventListener == null) { 
    mChildEventListener = new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      String key = dataSnapshot.getKey(); 
      Log.i(TAG, "onChildAdded " + s + " @ " + key); 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
      String key = dataSnapshot.getKey(); 
      Log.i(TAG, "onChildChanged " + s + " @ " + dataSnapshot.getKey()); 
     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 
      String key = dataSnapshot.getKey(); 
      Log.i(TAG, "onChildRemoved " + dataSnapshot.getKey()); 
     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 
      String key = dataSnapshot.getKey(); 
      Log.i(TAG, "onChildMoved " + s + " @ " + key); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.i(TAG, "onCancelled " + databaseError.getDetails()); 
     } 
    }; 

    mDatabaseReference.addChildEventListener(mChildEventListener); 
} 

所有预期的代码工作正常。不过,我注意到,在一段空闲时间后,应用程序未收到子侦听器事件(onChildAdded,onChildChanged等)。在地图上长按,latlng坐标将保存到我正在使用控制台监视的Firebase数据库中。 有没有人遇到过这样的问题?我错过了什么吗?

+0

我目前已授予公开访问数据库的初始开发目的。 – Sameer

回答

0

如果您使用adapter,则可以使用notifyDataSetChanged()方法通知适配器已进行了一些更改。

希望它有帮助。

+0

截至目前,我没有使用任何适配器。 – Sameer

+0

你在哪个地方删除了'EventListener'? –

+0

我删除了onStop()中的EventListener。 – Sameer