我有一个现有的应用程序,我试图转换为使用Firebase数据库.这是我尝试保存对象时使用的一些代码:
... private FirebaseDatabase database; private DatabaseReference waypointRef; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... database = FirebaseDatabase.getInstance(); waypointRef = database.getReference(Utils.WAYPOINT_REFERENCE); waypointRef.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot,String prevIoUsChildName) { FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class); wp.setId(dataSnapshot.getKey()); Log.e(TAG,String.format("Child Added: %s,%s,Prev: %s",wp.getName(),wp.getLatitude(),wp.getLongitude(),prevIoUsChildName)); } @Override public void onChildChanged(DataSnapshot dataSnapshot,String prevIoUsChildName) { FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class); Log.e(TAG,String.format("Child Changed: %s,prevIoUsChildName)); } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class); wp.setId(dataSnapshot.getKey()); Log.e(TAG,String.format("Child Removed: %s,wp.getLongitude())); } @Override public void onChildMoved(DataSnapshot dataSnapshot,String.format("Child Moved: %s,prevIoUsChildName)); } @Override public void onCancelled(DatabaseError databaseError) { Log.e(TAG,"Failed to add Child Listener.",databaseError.toException()); } }); ... }@H_301_4@创建对象后,我将其保存为:
waypointRef.push().setValue(wp);@H_301_4@我确实看到此时在我的日志中触发回调(以及firebase生成的id的值:
Child Added: Hrbrbe,44.969846,-89.670527,Prev: null Child Added: Hdbece,44.956019,-89.666436,Prev: -KInIzqk6m96lwVWF6Pc Child Added: Hebdbr R,44.970372,-89.673188,Prev: -KInJ17sfsQ4v_fUrAW3@H_301_4@但是,我没有在firebase控制台中看到这些记录的任何内容.此外,当我重新启动应用程序时,onChildAdded回调不会被触发. @H_301_4@我还创建了另一个应用程序,它只包含上面的代码……并且工作正常.所以我不确定我在现有应用程序中做的事情是否影响了firebase?但是,我不确定那可能是什么,因为我也把我所有的依赖都放在了简单的项目中. @H_301_4@关于我接下来可以检查什么的任何想法? @H_301_4@更新:我按照建议添加了onComplete Listener.永远不会被召唤.如果我在setValue()之后添加了FirebaseDatabase.purgeOutstandingWrites(),则会调用onComplete并显示以下错误:
DatabaseError: The write was canceled by the user.