kotlin 如何知道firebase上某些数据的确切位置发生了变化?(Android Studio)

vlurs2pr  于 2023-02-13  发布在  Kotlin
关注(0)|答案(1)|浏览(102)

我正在做一个使用firebase的项目,它的结构如图所示。节点如下所示:userUID-〉MAC_addr-〉Data。在Android端,我有如下所示的代码,正如你所看到的,当一些数据发生变化时,它会迭代很多次,这是因为我没有“MAC”字符串来使用它,所以当发生变化时,我必须带来所有的信息。例如,如果我有2个MAC方向和一些数据改变了其中之一,我将不得不把其他分支的信息了。2我该如何改进这一点?

reference.child(Firebase.auth.uid.toString()).addValueEventListener(object :ValueEventListener{
            override fun onDataChange(snapshot: DataSnapshot) {
                for (i in snapshot.children) {
                    //iterates on macAddresses
                    for(data in i.children){
                        //iterates on the real data
                        when(data.key){
                           "AlarmActivated"->{}
                           "AlarmOff"->{}
                           ...   
                        }
                     }
                  }

我试过其他的方法,但是所有的都需要知道整个路径,我在想把数据保存在手机上(有偏好,但是我不喜欢那种方法,我希望有更好的方法)

ffscu2ro

ffscu2ro1#

侦听某个路径时,只能获取有关已更改路径的直接子节点的信息。没有有关已更改的低级属性的特定信息。
典型的解决方案是保存你之前得到的快照,然后逐个属性地与应用程序代码中的任何更新进行比较。你可以自己使用本地存储来存储数据,也可以使用SDK内置的缓存机制来处理存储。

相关问题