В моем классе обслуживания есть метод обратного вызова, который будет вызываться каждую секунду со списком данных, и он непрерывно записывается в JSONArray, как показано ниже.
Этот onDataCapturemethod () вызывается каждую секунду.Так что этот метод будет вызываться 60 раз в минуту и так далее.
private void onDataCapture(List<DataModel> model){
myJsonArray.put(model);
}
Также у меня есть другой метод планировщика, который будет вызываться один раз каждые 15 секунд.Это возьмет данные из myJsonArray и отправит их на сервер.Затем он очистит массив.Так что этот метод будет вызываться 4 раза в минуту и так далее.
private void storeDataToBackend(){
for (int i = 0; i < myJsonArray.length(); i++) {
tempJson.put(myJsonArray.get(i));
}
.....
myJsonArray = new new JSONArray(); // Clearing after storing to backend
}
Моя проблема: иногда я сталкиваюсь с проблемой параллелизма, поскольку здесь происходит одновременное чтение и запись на myJsonArray.Как эффективно решить эту проблему в Android / Java?Пожалуйста, объясните на примере.Дайте мне знать, если потребуется более подробная информация.
Я прошел CopyOnWriteArrayList, и это немного дороже, как упомянуто в документации.Пожалуйста, объясните на примере, что можно сделать в этом случае.