我使用Android应用程序获得了firebaseAuth和FirebaseDatabse。在卸载并重新安装应用程序后,我发现FirebaseAuth.getInstance()。getCurrentUser()返回先前登录的用户的一些问题。我发布了此问题here
但是我也注意到调用FirebaseDatabse addListenerForSingleValueEvent()回调监听器会更改我数据库中的一些数据,而这只会在我再次卸载并重新安装应用程序时发生。下面显示的是我用来从FirebaseDB获取当前用户的代码。
final FirebaseAuth auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null) {
// already signed in
mDatabase.getReference("users").child(auth.getCurrentUser().getUid()).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// I commented the code here to check whether its coming from this part but it continued to occur even after commenting.
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "getUser:onCancelled", databaseError.toException());
}
});
}
正如您所看到的,我使用用户ID作为密钥访问数据库中名为users的节点,并且我成功获取了用户数据。然而,还有另一个名为" posts"在我的数据库中,我使用相同的用户ID作为密钥。但是用户和帖子是数据库中的两个不同节点。
所以当调用上面的addListenerForSingleValueEvent()时,发布节点中相应用户ID下的一些数据会发生变化。在几秒钟的回调之后,我可以看到一些新的数据已从用户发布的红色中删除,一些已经更改为黄色。 当我评论整个回调时,没有任何改变或删除帖子。
我提到过这种情况只有在我卸载并重新安装时才会发生。我尝试清除缓存而不卸载它没关系,我也尝试清除数据,它仍然没问题。
我还应该提到我正在使用mDatabase.setPersistenceEnabled(true);此问题仅在此设置为true时发生。我尝试评论这一行,一切正常。
任何人都可以帮助我,因为我在这个阶段迷路了。