在Firebase上编写ArrayList比在循环中编写更好的方法?

时间:2018-06-11 03:00:08

标签: java android firebase firebase-realtime-database

我现在通过Android APP连接到BLE设备,并将接收的数据添加到ArrayList。按下按钮时,我将此ArrayList中的数据写入Firebase。但是,我想知道是否有更好的方法来执行写入过程,因为当我按下按钮并开始写入时,ArrayList的大小可能很大。以下是我的代码:

List<HashMap> dataBufferList = new ArrayList();

HashMap<String, String> data = new HashMap<>();
data.put("HR", ","80");
data.put("GPS","20.75,56.98");
data.put("Time", getCurrentTime(sdf)); 
dataBufferList.add(data);

for(int  i = 0 ; i < dataBufferList.size();++i){
myRef.push().setValue(dataBufferList.get(i));
}
dataBufferList.clear();

1 个答案:

答案 0 :(得分:1)

什么是&#34;更好&#34;是主观的。但是,如果您想在一次通话中发送整个更新,则可以使用updateChildren()执行此操作:

List<HashMap> dataBufferList = new ArrayList();

HashMap<String, Object> updates = new HashMap<>();

HashMap<String, String> data = new HashMap<>();
data.put("HR", ","80");
data.put("GPS","20.75,56.98");
data.put("Time", getCurrentTime(sdf)); 
dataBufferList.add(data);

for(int  i = 0 ; i < dataBufferList.size();++i){
    updates.put(myRef.push().getKey(), dataBufferList.get(i))
}
myRef.updateChildren(updates);
dataBufferList.clear();

由于所有请求都已通过单个连接进行流水线处理(请参阅my answer here),因此这与您执行的操作之间的性能差异将是最小的。但是,如果所有数据都在一起,那么在一次调用中发送它们可能允许您在服务器上进行其他验证。