2

この質問は、私が尋ねた既存の質問に関連しています。他の質問に返信する代わりに、新しい質問をします。

「アクティビティに複数のハンドラーがあります。」なんで?handleMessage()複雑なメソッドが必要ない場合は、 post()(onHandlerまたはView) を使用してロジックを個々の に分割しますRunnables。複数Handlersは緊張します。— コモンズウェア

私はAndroidが初めてです。私の質問は、単一のアクティビティに複数のハンドラーがあるのは悪い設計ですか?

これが私の現在の実装のスケッチです。

mapActivityデータ スレッド (データをリッスンする UDP ソケット) を作成します。最初のハンドラーは、データ スレッドからアクティビティにデータを送信する役割を果たします。

refreshedマップ上には、頻繁に表示される「動的」マーカーがたくさんあります。これらのマーカーの一部はビデオ マーカーです。つまり、ユーザーがビデオ マーカーをクリックする と、マップ アクティビティにViewViewを拡張するを追加しandroid.opengl.GLSurfaceView、この新しいビデオにビデオを表示します。2 番目のハンドラーを使用して、ユーザーがメソッドでタップしたマーカーに関する情報を送信しますItemizedOverlay onTap(int index)

ユーザーは、ビデオ ビューをタップしてビデオ ビューを閉じることができます。これには 3 番目のハンドラーを使用します。

人々がこのアプローチの何が問題なのかを教えてくれ、これを実装するためのより良い方法を提案してくれれば幸いです。

ありがとう。

4

1 に答える 1

3

以前のコメントで書いたように、そのために複数のHandlerオブジェクトを使用することはありません。

UDPソケットスレッドに関しては、既存のHandler、を使用するか、を使用post()してメインアプリケーションスレッドにMapView投稿するか、を使用することができます。RunnablerunOnUiThread()MapActivity

「ユーザーがItemizedOverlayonTap(int index)メソッドでタップしたマーカーに関する情報を送信する2番目のハンドラー」に関してはonTap()、メインアプリケーションスレッドで呼び出されるため、を使用する必要はありませんHandler。同じことがあなたの3番目にも当てはまりますHandler

于 2010-05-14T11:59:22.510 に答える