两个应用程序使用相同的firebase数据库.一个应用程序,即A正在使用setValue写入一些值.第二个应用程序,即B正在尝试使用addListenerForSingleValueEvent读取一些数据,这个数据同时被用作A用户配置文件信息.这导致在读取数据库时B应用程序中的数据快照为空值.任何人都可以指导我如何避免这种情况.
只是为了清楚一点,A正在写一个其他节点,而B正在访问它.
这就是我从B应用程序访问数据的方式.
DatabaseReference usersRef = MyDatabaseUtils.getUsersReference(); usersRef.orderByChild("userID").equalTo(userIDValue).addListenerForSingleValueEvent(new ValueEventListener() { @OverrIDe public voID onDataChange(DataSnapshot dataSnapshot) { // Get value if (dataSnapshot.getChildrenCount() > 0) { // Do something } else { // Show error } } @OverrIDe public voID onCancelled(final DatabaseError databaseError) { // Show error } });
如果我在阅读B应用程序时停止A写作,一切正常.
解决方法:
一个简单的修复方法是防止数据快照在onDataChange函数中为null:
if (dataSnapshot != null && dataSnapshot.getChildrenCount() > 0)
当A写入Firebase时,它可能会从以前存在的usersReft中删除一些属性.
总结以上是内存溢出为你收集整理的android – firebase中的并发事务在读取dataSnapshot时产生null全部内容,希望文章能够帮你解决android – firebase中的并发事务在读取dataSnapshot时产生null所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)