[Android/Android]Thread/Handler/Looper
キーワードの定理
Thread
アンドロイドシステムは基本的にメインスレッドです.アンドロイドのスレッドは、①メインスレッドと②バックグラウンドスレッドに分けられます.プライマリ・スレッドは1つしか存在しません.バックグラウンド・スレッドは複数存在できます.
1.メインスレッド(UIスレッド)
2.バックグラウンドスレッド
Handler
Handler(Handler):受信したメッセージを処理し、スレッド間でメッセージを渡す
ハンドラが作成された場合は、そのハンドラが作成されたねじとカーソルに接続されます.Handlerの利点は,postDelayedなどのメッセージの順序や送信時間を操作する関数を持つため,スケジューリングが可能であることである.
Looper
Looper(Looper):同じ操作を続行します.メッセージキューからメッセージとrunnableオブジェクトを順番に取り出し、プロセッサに渡します.
1つのスレッドには1つのLooperしかありません.Looperは1つのスレッドだけを担当します.Looperはスレッド間の信号であり,handlerへの送信は直ちに処理されるものではない.複数のメッセージが同時に発生する可能性があるため、メッセージキューにスタックして処理します.キューの中の内容を一つ一つ取り出して処理します.これがルーパーです.プライマリ・スレッドにはlooperがあり、キューの内容を無限ループで処理します.
使用例
Androidは、メインスレッドで個々のスレッドの結果を処理するので、Main Looperを指定してHandlerを生成します.
var handler: Handler? = null
val thread = Thread {
handler = Handler(Looper.getMainLooper())
}
thread.start()
PostDelayedを使用して2秒後に作業をスケジュールする例lateinit var runnable: Runnable
var handler: Handler? = null
handler = Handler(Looper.getMainLooper())
runnable = Runnable {
//UI작업
}
handler!!.postDelayed(runnable, 2000)
Reference
この問題について([Android/Android]Thread/Handler/Looper), 我々は、より多くの情報をここで見つけました https://velog.io/@dev_jin/Android안드로이드-ThreadHandlerLooper-5v6by33kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol