我正在做一个使用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"->{}
...
}
}
}
我试过其他的方法,但是所有的都需要知道整个路径,我在想把数据保存在手机上(有偏好,但是我不喜欢那种方法,我希望有更好的方法)
1条答案
按热度按时间ffscu2ro1#
侦听某个路径时,只能获取有关已更改路径的直接子节点的信息。没有有关已更改的低级属性的特定信息。
典型的解决方案是保存你之前得到的快照,然后逐个属性地与应用程序代码中的任何更新进行比较。你可以自己使用本地存储来存储数据,也可以使用SDK内置的缓存机制来处理存储。