我正在尝试使用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。
这是错误还是我在这里遗漏了什么?