この投稿スレッド間の通信 セクションは、
新しいスレッドのタスクがメイン UI スレッドに関連付けられたビューを変更したい場合、この問題は特に深刻です。直接行うことは固く禁じられているためです。
禁止/禁止されている理由。
この投稿スレッド間の通信 セクションは、
新しいスレッドのタスクがメイン UI スレッドに関連付けられたビューを変更したい場合、この問題は特に深刻です。直接行うことは固く禁じられているためです。
禁止/禁止されている理由。
Handler は、ワーカー スレッドからの要求を MessageQueue のキューに入れ、メイン スレッドで順次実行されるようにします。
次のブログ投稿は、ハンドラーの仕組みについて詳しく知るのに非常に役立ちます。
これを読んで下さい、
UIスレッドでUIを機能させ、非UIスレッドで非UIを機能させることは常に良い習慣であり、ハニカムは法律であるためです。私たちは常に専用 UI スレッドから始めますが、非 UI タスクを実行するために別のスレッドを作成するとすぐに、専用 UI スレッドからドロップされ、非 UI スレッドに到達します。処理済みの出力を UI スレッドに配置したいのですが、UI スレッドへの参照が失われているため、直接行うことはできません。Handler は、それが作成されたスレッドへの参照を取得するのに役立ちます。そのため、onCreate() で Handler を初期化し、後で非 UI スレッド内からこの参照を呼び出すことをお勧めします。
Android が提供する AsyncTask<> を使用すると、UI スレッドと非 UI スレッドが同期されます
AsyncTask<> のメソッド
doInBackground(String...) // 非 UI スレッドで作業する
postExecute(String result) // 非 Ui スレッドから出力を取得し、
出力を UI スレッドに戻す