私は1つのスレッドについて話しています。たとえば、Activity ui と次のメソッドがあります。
/* 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 */
私の質問は、onClick() ハンドラーの実行によって doComplicatedStuff() を中断できますか (もちろん、クリックされたボタンがある場合) ?
これで、onClick() ハンドラーは doComplicatedStuff() が作業を終了するまで doComplicatedStuff() の実行を中断できないと思います。コード実行の最上位にルーパーがあるため、次のメッセージ イベントを受け取り、ハンドラーにディスパッチします (ハンドラーは onClick() メソッドを呼び出します)。つまり、Looper は、このスレッドで実行中のメソッドがない場合にのみ作業を行います。