Я запускаю через excecute(), про runOnExcecutor не слышал.
Дело в том, что в цикле будут запускаться другие фоновые процессы и они должны идти параллельно, а не последовательно.
Хорошо. Это будет программа, которая управляет устройством (таймлапс слайдером) на основе Arduino.
Раньше я это делал в Processing с его стандартным циклом draw(). В цикле программа:
1) Реагировала на разрыв соединения.
2) Реагировала на полученные от Arduino сообщения.
3) Обновляла таймер обратного отсчета и индикатор процесса (ProgressBar).
Всё заработало. Не нужно было переопределять onBackPressed(), нужно было добавить finish() при в первое activity, чтобы не возвращаться в него по кнопке Back.
Поменял местами, вроде, неплохо. А вот на что переопределить onBackPressed(), чтобы приложение закрывалось? Поискал, обычно советуют finish(), но это не работает.