Я читаю строки текста из входного потока (в настоящее время текстового файла, в конечном счете, через блютус)Android Наблюдаемые/AsyncTask ждать до завершения цикла перед выполнением
Линия заворачивает в bufferItem и добавляет к буфер (ArrayList), который запускает Наблюдаемое &
setChanged();
notifyObservers(item);
метод обновления на пожарах наблюдателей от с AsyncTask для каждого элемента буфера.
Поскольку мой поток ввода будет по существу «бесконечным», я хочу, чтобы все это происходило одновременно (т.е. данные обрабатываются, а новые данные также поступают в реальном времени), но я обнаружил, что asyncTasks не начинайте, пока весь файл не будет прочитан.
Чтение битого файла ниже:
while (((inputLine = bufferedReader.readLine()) != null)) {
if (inputLine.substring(0,1).equals("$")){
bufferItem bi = new bufferItem();
bi.addItem(inputLine);
for (int i = 1; i < repeatRate; i++) {
bi.addItem(bufferedReader.readLine());
}
// adding to buffer triggers the observer
buffer.addItem(bi);
}
}
Наблюдаемый весь процесс/наблюдатель работает, но ни один из последующих процессов не удар, пока после того, как весь входной файл был прочитан.
Я мониторинг его с помощью линий, аналогичные:
System.out.println("Item added to buffer");
С Println в точке, где элемент добавляется в буфер, а другой в одном из последующих процессов внутри AsyncTask
Поэтому сначала я получаю все строки «Item added to buffer», за которыми следуют строки журнала процессов в нисходящем потоке, когда я ожидаю, что они будут перемешаны.
Так что вопрос (я думаю) - почему он дожидался завершения цикла, прежде чем действовать над инструкциями notifyObservers()?
Почему так голосуют? – Mitch