Firebase .on()侦听器导致Cordova iOS应用程序崩溃

时间:2016-10-12 11:31:49

标签: ios cordova firebase firebase-realtime-database

我制作了一个空白的全新Cordova应用程序(-v 6.3.1),并为iOS打造。该应用程序除了以下内容外什么都不做:

var ref = new Firebase('url-to-firebase-leaf-node-with-4000-children');
ref.on("child_added", function(child, prev) {
    console.log("here");
});

部署到iPhone。该应用程序崩溃了,Xcode引用了以下内容:

WebThread (7): EXC_BAD_ACCESS (code=1, address=0xbbadbeef)内的

bmalloc::VMHeap::grow()

如果我这样做:

var ref = new Firebase('url-to-firebase-leaf-node-with-100-children');然后该应用不会崩溃。

这显然是一个记忆问题,但如何解决呢?从4,000个子节点中下载了1.5Mb的数据,我无法想象这应该耗尽所有可用内存。请避免不提取所有数据的建议 - 应用程序需要所有数据并在Android上正常运行。

2 个答案:

答案 0 :(得分:2)

本机崩溃非常具有表现力。应用程序内存不足。

Firebase SDK使用您的订阅构建数据库的内存镜像。即使您的child_added回调没有对子快照执行任何操作,此内部树也会使用内存来显示节点下的所有数据。

因此,如果数据库适合您的域模型,您应该考虑对订阅使用限制,引入分页,甚至重构数据库。

答案 1 :(得分:0)

在添加child_added侦听器之前,请确保已缓存所有数据(通过上述分页技术或其他方式)。