Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-内存成本-Firebase实时数据库x Room持久性库_Android_Firebase_Memory_Firebase Realtime Database_Android Room - Fatal编程技术网

Android-内存成本-Firebase实时数据库x Room持久性库

Android-内存成本-Firebase实时数据库x Room持久性库,android,firebase,memory,firebase-realtime-database,android-room,Android,Firebase,Memory,Firebase Realtime Database,Android Room,调试Firebase实时数据库方法ValueEventListener.onDataChange,DataSnapshot从云中加载所有数据 考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备角度) 我希望实现这两个功能,使用Firebase实时数据库每天更新存储本地数据和房间数据库。对于这种方式,根据用户交互,只需将必要的数据加载到设备的内存中 考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备角度) 最好的解决办法是使用限制。这是有关Firebase实时数据库的官方文档。如您

调试Firebase实时数据库方法
ValueEventListener.onDataChange
DataSnapshot
从云中加载所有数据

考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备角度)

我希望实现这两个功能,使用Firebase实时数据库每天更新存储本地数据和房间数据库。对于这种方式,根据用户交互,只需将必要的数据加载到设备的内存中

考虑到低内存成本,处理大量数据的最佳解决方案是什么(从设备角度)

最好的解决办法是使用限制。这是有关Firebase实时数据库的官方文档。如您所见,有几种方法可以帮助您实现这一目标

如果试图加载大量数据,可能会遇到如下错误:

OutOfMemoryError. You may need to reduce the amount of data you are syncing to the client. java.lang.OutOfMemoryError: Failed to allocate a 28701016 byte allocation with 16777216 free bytes and 18MB until OOM
在这种情况下,应在所需属性上创建索引。没有它,服务器无法为您进行排序/筛选,而这将在客户端完成。这意味着客户端必须读取所有数据并将其保存在内存中,从而解释了巨大的内存使用量

解决办法很简单。使用时,应在所需的
属性上定义索引。它可以简单到:

{
  "rules": {
    "codes": {
      ".indexOn": "yourProperty"
    }
  }
}

你的解释很好,我不知道这个Firebase索引功能。但我认为我需要改变我的JSON数据模型,使索引可行。目前,我的数据模型遵循以下模式:为了提高Firebase查询的可用性,我认为数据库模型必须是这样的:构建Firebase数据库没有完美或唯一的解决方案。最好的解决方案是适合您的需要并使您的工作更轻松的解决方案。如果该模式最适合您,那么就继续使用它。在FialBASE中添加大量数据是一种常用的方法。如果你认为我的答案对你有帮助,请考虑接受并投票表决。我会很感激的。谢谢