2011-06-23 9 views
1

私はこのアイデアの周りに私の頭をラップするいくつかの問題を抱えている、と私はいくつかの入力をしたい。私は新しいスレッド(この場合はRunnableを実装しているクラスで、スレッドは拡張していないクラス)を実行する私の初期のアクティビティからサービスを開始しています。それはonCreate()です。スレッドはまず、TCPクライアントソケットを作成し、アプリケーションの実行、アクティビティの切り替えなど、バックグラウンドでリクエストを送信してX秒ごとに応答を受信し始めます。ただし、すべてのアクティビティからスレッドにアクセスできるようにする必要があります。 UIエレメントがトリガーされたときにカスタムリクエストを送信することができます。サービスは静的コンテキストからアクセスできますが、実行中のスレッドインスタンスにアクセスしようとすると、メインスレッドでネットワーク操作を実行する際にエラーが発生します。つまり、実際のインスタンスではなく、アクセスしているUIスレッドです。私はサービスが新しいメッセージをポーリングできる共有Applicationクラスのメッセージキューを実装することを考えましたが、それは醜いようです。たぶん私はこの間違いを犯しているだろうし、この問題に近づくためのより良い/よりクリーンな方法があるだろうか?助言や助けをいただければ幸いです。スレッドにアクセスするサービスによって開始

+1

いいえ、あなたは正しい方向に向かっています。そのメッセージキュー( 'BlockingQueue')を使ってスレッドと通信します。 –

+0

AIDL(http://developer.android.com/guide/developing/tools/aidl.html)を使用してサービスと通信することができます – ethrbunny

答えて

1

Looper/Handlerメカニズムを使用してスレッドにメッセージを送信できます。

+0

ありがとうございます、これは私が入ってきた方向です、そして、それは完全に動作するようでした。何らかの理由で私は最初にそれを見落としました。 – Matt

関連する問題