Я новичок в разработке приложений для Android, и у меня возникла проблема с асинхронными задачами.
Поэтому я пытаюсь создать приложение для построения графиков ЭКГ, которое выполняет некоторую фоновую обработку во время выполнения графиков.
Я определил следующую асинхронную задачу -
private class Erosion extends AsyncTask <Void,Void,Void> {
@Override
protected Void doInBackground(Void...unused ) {
int i,tempIndex;
double[] tempArray = new double[13];
double min = ecgSamples[ecgSampleForErosionIndex] - gArray[0];
while (ecgIncoming)
{
if (ecgSampleForErosionIndex > 179999)
{
ecgSampleForErosionIndex = 0;
}
for(i= 0;i<13;i++)
{
tempIndex = ecgSampleForErosionIndex + i;
if (tempIndex > 179999)
{
tempIndex = (ecgSampleForErosionIndex + i) - 180000;
}
tempArray[i] = ecgSamples[tempIndex] - gArray[i];
if (tempArray[i] < min)
{
min = tempArray[i];
}
}
//min needs to be stored in the erosionFirst Array
if (erosionFirstArrayIndex > 179999)
{
erosionFirstArrayIndex = 0;
}
ecgErosion[erosionFirstArrayIndex] = min;
erosionFirstArrayIndex++;
ecgSampleForErosionIndex++;
}
return null;
}
} //End of Async Task
Итак, все, что я пытаюсь сделать, это изменить содержимое определенного массива в асинхронной задаче - мне не нужно обновлять интерфейс (по крайней мере, пока)
Однако, когда я запускаю эту асинхронную задачу, мой график ЭКГ замедляется и становится прерывистым. Когда я закомментирую "new Erosion (). Execute ();" В коде, где я запускаю задачу Async, график снова становится нормальным.
Разве асинхронная задача не должна выполняться в отдельном потоке и поэтому не влиять на то, как все происходит в потоке пользовательского интерфейса? Что я делаю неправильно?