数据未从Android应用中保存到Firebase

前端之家收集整理的这篇文章主要介绍了数据未从Android应用中保存到Firebase前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个现有的应用程序,我试图转换为使用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());
        }
    });
    ...
}

创建对象后,我将其保存为:

waypointRef.push().setValue(wp);

我确实看到此时在我的日志中触发回调(以及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

但是,我没有在firebase控制台中看到这些记录的任何内容.此外,当我重新启动应用程序时,onChildAdded回调不会被触发.

我还创建了另一个应用程序,它只包含上面的代码……并且工作正常.所以我不确定我在现有应用程序中做的事情是否影响了firebase?但是,我不确定那可能是什么,因为我也把我所有的依赖都放在了简单的项目中.

关于我接下来可以检查什么的任何想法?

更新:我按照建议添加了onComplete Listener.永远不会被召唤.如果我在setValue()之后添加了FirebaseDatabase.purgeOutstandingWrites(),则会调用onComplete并显示以下错误

DatabaseError: The write was canceled by the user.

解决方法

好吧,我只是想通了.认为我的两个项目之间存在差异的是一个红鲱鱼.实际差异在于我正在部署这两个项目的两个设备之间.工作设备处于蜂窝连接状态.无法正常工作的设备位于代理后面的企业wifi网络上.

我确实在设备上正确设置了代理,我可以访问外部网站…但是,看起来firebase不使用代理设置source.

如果Firebase使用设备代理设置,那就太棒了!

原文链接:https://www.f2er.com/android/318047.html

猜你在找的Android相关文章