像这样的Firebase
侦听器会占用巨大的堆内存吗?
ref.addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot snapshot) {
}
});
至少在拍摄快照时?
Firebase 数据库客户端会在应用的内存中保留您正在侦听的所有数据的副本。删除某个位置的最后一个侦听器后,正如我们在此处已经讨论的那样,数据将从内存中删除。
当我们谈论Firebase时,一切都与听众有关,并且作为对您的问题的快速回答,不,听众不会占用大量内存,如果正确删除它们,您可以使用任意数量的听众。
使用 addListenerForSingleValueEvent() 意味着:
为此位置的数据
single
更改添加侦听器。
因此,无需删除侦听器。
例如,如果您使用了ref.keepSynced(true)
,则ref
位置的所有数据都将保存在内存中并保持最新。
如果enable persistence
,客户端还会将活动和最近的数据保存到磁盘。
如果该节点的数据发生变化并且互联网连接可用,则addListenerForSingleValueEvent()
在调用时只会snapshot
或同步一次数据。
每当节点的数据发生变化并且互联网连接可用时,addValueEventListener()
将从节点拍摄快照或同步数据。