Looper.prepare()の仕組み

Looper.prepare()メソッドは、現在のスレッドのメッセージループ機構を初期化する。Android 開発では、各スレッドは Looper.prepare() の呼び出しを介してメッセージループ機構を初期化し、メッセージを受信・処理できるようにする必要がある。

Looper.prepare()を呼び出すと、現在のスレッドにLooperオブジェクトが作成され、ThreadLocalに格納されます。Looperオブジェクトはメッセージキューにあるメッセージを受け取って処理するためのメッセージルーパーです。

Looper.prepare()で準備したのち、メッセージループの仕組みを起動するには、Looper.loop()メソッドを呼び出す。Looper.loop()はメッセージキューからメッセージを無限に取得して、対応するハンドラで処理を分散する。

主スレッドのメッセージループは、通常、主スレッドのLooper.prepare() と Looper.loop() の呼び出しによって初期化されます。その結果、主スレッドは UI 操作に関連するメッセージを受信して処理できるようになります。

サブスレッドはデフォルトではメッセージループの仕組みがないことに注意してください。サブスレッドでメッセージを処理する必要がある場合は、Looper.prepare() と Looper.loop() メソッドを手動で呼び出してメッセージループの仕組みを初期化する必要があります。

Looper.prepare()メソッドでは、カレントスレッドのメッセージループを初期化し、Looperオブジェクトを生成してThreadLocalに格納することで、メッセージの送受信を可能にします。

bannerAds