Мы сделали что-то подобное, просто создав класс массива точек с несколькими страницами и нарисовав в opengl со смещением, чтобы текущая точка всегда была в одном и том же месте.
Идея состоит в использовании массивов фиксированного размера с отдельнымсчетчик, так что вы не сталкиваетесь с проблемами выделения памяти, которые могут привести к срабатыванию gc. Как только страница заполнится, перейдите к следующей странице, отображающей также старую страницу.Идея состоит в том, что если у вас есть 5 страниц, вы можете написать на одну, отобразить остальные 3 и пакетно записать последнюю на sqlite на SD-карте в отдельном потоке, чтобы вы могли извлечь все данные позже.
Пока у вас есть только один поток, записывающий в массив, вы можете получить что-то вроде
arrayPoint[] p;
....
int currentPos = 0;
arrayPoint current = p[currentPos];
.....
while(....
if(current.end < current.max)
{
.... get datax and datay
current.end++;
current.x[current.end] = datax;
current.y[current.end] = datay;
}
else
{
currentPos = getNextPos();
current = p[currentPos];
current.end = -1; // truncate the array without actually freeing or allocating mem
..... flip volatile bool to let other thread know its ok to get exclusive access to its data etc
}
Это очень быстро и должно делать то, что вам нужно.Затем вы можете вывести в виде точки на холсте или нарисовать в opengl es
Надеюсь, это поможет.