安卓7的Firebase onDataChange错误?

时间:2017-05-02 19:48:43

标签: android firebase firebase-realtime-database

我正在尝试使用android 7.0 API 24和Android 6.01 API 23的应用程序,而使用API​​ 24的应用程序正在给我带来地狱......

我有这段代码:

            DatabaseReference online = mPostReference.child("online").child(msg.friend_id);
            online.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    Online post = dataSnapshot.getValue(Online.class);
                    if ( viewHolder.getDiff(post.timestamp) < 1){
                        System.out.println("True: " + msg.friend_id + viewHolder.getDiff(post.timestamp));
                        viewHolder.setOnline("visible");
                    } else {
                        System.out.println("False: " + viewHolder.getDiff(post.timestamp));
                        viewHolder.setOnline("gone");
                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    System.out.println("The read failed: " + databaseError.getCode());
                }
            });

情况: 当用户B登录时,数据时间戳被更新,并且在用户A的配置文件图片旁边出现在线气泡。 如果用户B按下后退按钮,时间戳将更新为+5分钟的值,这使得onDataChange获取第二个值,该值在else语句中,并且在线气泡将立即消失。

我遇到的问题是在API 23工作正常..我登录,它显示在线泡泡,我按下后退按钮,应用程序关闭,firebase数据库更新,泡沫消失,因为值更改和onDataChange触发这个改变。

但是在API 25上它不会这样工作。如果用户登录,有时在viewHolder内的所有用户上都会出现在线气泡,有时只是正确的用户。 (如果为所有用户显示,我必须刷新活动,它只显示1)如果用户按下后退按钮并退出应用程序,firebase数据库将更新,但在线气泡的状态将不会改变,直到我退出我的应用程序或转到其他活动以强制在返回时检查onDataChange。

这是错误还是我在这里遗漏了什么?

0 个答案:

没有答案