1

この投稿スレッド間の通信 セクションは、

新しいスレッドのタスクがメイン UI スレッドに関連付けられたビューを変更したい場合、この問題は特に深刻です。直接行うことは固く禁じられているためです。

禁止/禁止されている理由。

4

3 に答える 3

1

Handler は、ワーカー スレッドからの要求を MessageQueue のキューに入れ、メイン スレッドで順次実行されるようにします。

次のブログ投稿は、ハンドラーの仕組みについて詳しく知るのに非常に役立ちます。

Android – UI 環境でのマルチスレッド

于 2012-05-14T10:52:44.190 に答える
1

これを読んで下さい、

UIスレッドでUIを機能させ、非UIスレッドで非UIを機能させることは常に良い習慣であり、ハニカムは法律であるためです。私たちは常に専用 UI スレッドから始めますが、非 UI タスクを実行するために別のスレッドを作成するとすぐに、専用 UI スレッドからドロップされ、非 UI スレッドに到達します。処理済みの出力を UI スレッドに配置したいのですが、UI スレッドへの参照が失われているため、直接行うことはできません。Handler は、それが作成されたスレッドへの参照を取得するのに役立ちます。そのため、onCreate() で Handler を初期化し、後で非 UI スレッド内からこの参照を呼び出すことをお勧めします。

于 2012-05-14T10:31:13.103 に答える
0

Android が提供する AsyncTask<> を使用すると、UI スレッドと非 UI スレッドが同期されます

AsyncTask<> のメソッド

doInBackground(String...) // 非 UI スレッドで作業する

postExecute(String result) // 非 Ui スレッドから出力を取得し、

出力を UI スレッドに戻す

于 2012-05-14T10:08:58.480 に答える