web-dev-qa-db-ja.com

Androidハンドラー-スレッド間通信

Androidのハンドラーを使用して2つのスレッド間の双方向通信をどのように実装しますか?

スレッドBを生成するサービスAがあります。BからAへの通信はかなり簡単です。ハンドラーをBのコンストラクターに渡すだけですが、AからBに通信するにはどうすればよいですか? Bには、ルーパーが自動的に割り当てられていません。

誰かが答えを得ましたか?

21
ohm

ここ は、ハンドラーを使用したスレッドと通信について説明する良い投稿です。また、同じブログには、Androidのさまざまなスレッド構成に関する多数の投稿があります

33
advantej

作成したばかりのスレッド(ただし、まだ初期化されていない可能性があります)のハンドラーを取得する問題を解決するには、 ルーパースレッドを作成してすぐにメッセージを送信する方法を参照してください

5
Liudvikas Bukys

新しいスレッドでLooper.prepare()を呼び出すと、そのスレッド用にLooperが作成されます。次に、他のスレッドに戻すハンドラーを作成できます。

つまり、Looper.prepare()を呼び出した後、ステートメントHandler h = new Handler()は新しいスレッドのルーパーにハンドラーを作成します。

http://developer.Android.com/reference/Android/os/Looper.html

1
Jason LeBrun