2017-05-07 71 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