У меня есть приложение для Android, которое позволяет пользователю записывать данные (такие как акселерометр, широта, долгота и т. Д.). Всего имеется 9 таких полей, и пользователь может записывать до 10 минут (3000 записей на поле). Таким образом, можно собрать 27 000 точек данных. Пользователь также может делать фотографии и видео для загрузки SD-карты.
Когда пользователь завершает сбор данных (или истекают 10 минут), данные сохраняются в строке, которая затем загружается на карту SD в виде файла .csv. Проблема, однако, в том, что для добавления данных в строку требуется навсегда из-за огромного количества мусора (кажется, что это приблизительно 5 сборок или около того в секунду!) Добавление начинается быстро , но, похоже, замедляется с увеличением количества данных.
Это цикл, который вызывает отставание:
for( i = 0 ; i < len2 ; i++ ) {
data += accelX[i] + ", " + accelY[i] + ", " + accelZ[i] +
", " + accelT[i] + ", " + latitu[i] + ", " +
longit[i] + ", " + orient[i] + ", " +
magneX[i] + ", " + magneY[i] + ", " + magneZ[i] +
", " + millis[i] + "\n";
partialProg = 100.0 * ( (double)(i+1) / (double)(len2));
dia.setProgress((int) partialProg);
}
data
- это просто строка, и ничто не new
редактируется, поэтому я не уверен, почему GC вызывается так часто. Мой вопрос: в чем здесь проблема, и / или как я могу сделать это более эффективным?