Я про одну ветку. Например, у меня есть пользовательский интерфейс Activity и следующие методы:
/* TOP LEVEL OF EXECUTION LOOPER NOW WORKING */
class MyActivity extends Activity {
void onCreate(Bundle instance) {
super.onCreate(instance);
setContentView(R.layout.activity_main);
doComplicatedStuff();
}
void doComplicatedStuff() {
// Doing stuf
}
void onClick() {
// Process event
}
void anyOtherMethod() {
/* NOT TOP LEVEL OF EXEUCTION, LOOPER NOW CAN'T WORK */
}
}
/* TOP LEVEL OF EXECUTION, LOOPER NOW WORKING */
Итак, мой вопрос: может ли doComplicatedStuff() быть прерван выполнением обработчика onClick() (когда, конечно, у нас была нажатая кнопка)?
Теперь я думаю, что обработчик onClick() не может прервать выполнение doComplicatedStuff() до тех пор, пока doComplicatedStuff() не завершит свою работу. Потому что на верхнем уровне выполнения кода у нас есть Looper, который принимает следующее событие сообщения и отправляет его в обработчик (обработчик затем вызывает метод onClick()). Другими словами, Looper выполняет вашу работу только тогда, когда в этом потоке нет исполняемого метода.