リモートサービスを常に実行し、これらのタスクを実行する必要があるアプリケーションをコーディングしています:
- 別のデバイスへの Bluetooth 接続を作成して維持する
- このデバイスに定期的に情報を要求する (1 秒)
- 定期的に GPS 位置情報を取得します (1 秒)
- 前のデータを 1 秒ごとにテキスト ファイルに書き込む
このために、リモート サービスから 2 つのスレッドを作成しました。1 つはデータ要求用 (loopThread) で、もう 1 つは GPS 位置情報 (gpsThread) 用です。loopThread は、blueTooth デバイスからデータを取得した後、gpsThread に場所を問い合わせる必要があります。それは非常に速くなければならないので、私はスレッドを使用しているので、場所を変数に保存して送信することができます。
リモート サービスと 2 つのスレッドは、ハンドラを介して通信する必要があります。
問題は、各ハンドラーをリモート サービスと通信させることはできますが、相互に通信させることはできません。
私はこのようなスレッドを作成します:
myGPSThread = new GPSThread(mainServiceHandler,locationManager);
myLoopThread = new AcquisitionThread(mainServiceHandler, sockIn, sockOut);
メッセージで一方のハンドラーを他方に送信しようとしましたが、ハンドラーはパーセル可能ではないようです。
誰もこれに対する解決策を持っていますか?