Android Firebase不断获取旧值

问题描述 投票:0回答:3

我在Android项目中使用Firebase。我有一个ValueEventListener,它继续获取旧值,即使该节点已被其他设备修改。它似乎无视其他设备所做的更新。

这是我的代码:

ValueEventListener listener =  destinationDatabaseReference.child(somestring)
                    .addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            if(dataSnapshot.getValue()==null)
                            {
                            }
                            else
                            {
                                //here I keep on getting the old value
                                string value = (long) dataSnapshot.child("someString").getValue();
                            }
                            }
java android firebase firebase-realtime-database
3个回答
0
投票

使用这样的查询: -

Query query = mDatabase.getReference().child("posts").orderByChild("date").limitToLast(1);
query.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    if(dataSnapshot!=null){
                        String notific = String.valueOf(dataSnapshot.getValue());
                        Log.d("key",dataSnapshot.getKey());
                        Log.d("title",String.valueOf(dataSnapshot.child("title").getValue()));
                        Log.d("content",String.valueOf(dataSnapshot.child("content").getValue()));
                    }
                }

0
投票

谢谢大家的帮助。我尝试了你的建议,但它对我不起作用:(但是,我找到了这个链接,我想分享以防有人需要它。

对于此类问题,您必须使用事务操作。请参阅以下相关有用链接:

Updating firebase data in several devices by Transaction Operations

Similar Question with Working Answer


-1
投票

尝试使用这样的最终引用:

URL url = new URL(yourURL);
final Firebase root = new Firebase(url.toString());
root.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) DataSnapshot dataSnapshot) {
                            if(dataSnapshot.getValue()==null)
                            {
                            }
                            else
                            {
                                //here I keep on getting the old value
                                string value = (long) dataSnapshot.child("someString").getValue();
                            }
}
© www.soinside.com 2019 - 2024. All rights reserved.