两个应用使用相同的firebase数据库。一个应用程序,即 A 正在使用 setValue 写入一些值。第二个应用程序,即 B 正在尝试使用 addListenerForSingleValueEvent 读取一些数据,这些数据适用于 A ,例如 A 用户个人资料信息同时。这会导致在读取数据库时 B 应用程序中的数据快照为空值。任何人都可以指导我如何避免这种情况。
只是为了澄清一点, A 正在写一些其他节点,而 B 正在访问该节点。
这就是我从 B 应用访问数据的方式。
public class MyBaseClass<T>
{
public virtual T MyMethod() { return default(t); }
}
public class MyIntClass : MyBaseClass<int>
{
public override int MyMethod() { return 1; }
}
public class MyListClass : MyBaseClass<List<string>>
{
public override List<string>> MyMethod() { return new List<string>(); }
}
如果我在阅读 B 应用程序时停止写 A ,一切正常。
答案 0 :(得分:2)
一个简单的解决方法是防止datasnapshot
函数内的onDataChange
为空:
if (dataSnapshot != null && dataSnapshot.getChildrenCount() > 0)
当 A 写入Firebase时,可能会删除以前存在的usersRef
中的某些属性。