Лучший способ написать ArrayList на Firebase, чем для цикла? - PullRequest
0 голосов
/ 11 июня 2018

Я подключаюсь к устройству BLE через приложение Android и добавляю полученные данные в 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 голосов
/ 11 июня 2018

То, что «лучше», субъективно.Но если вы хотите отправить все обновление за один вызов, вы можете сделать это с помощью 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();

Разница в производительности между этим и тем, что вы делаете, будет минимальной, так как все запросыуже передано по конвейеру через одно соединение (см. мой ответ здесь ).Но отправка их за один вызов может позволить вам выполнить дополнительные проверки на сервере, если все данные принадлежат друг другу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...