我现在通过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();
答案 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),因此这与您执行的操作之间的性能差异将是最小的。但是,如果所有数据都在一起,那么在一次调用中发送它们可能允许您在服务器上进行其他验证。