4

私は現在、CDC を使用する USB ホスト デバイスである独自のワイヤレス ブリッジを介してワイヤレス デバイスをリモート コントロールするために使用される、より大きなアプリの設計を完成させようとしています。

しかし、現在、アクティビティ、サービス/インテントサービス、およびワーカースレッドの間で正しい分割を行う方法に行き詰まっています.....

アプリケーションは、次の基本要素で構成されます。 - もちろんすべてがアクティビティになるさまざまな GUI 画面。いくつかのメッセージを受信し、これらのメッセージ受信時にハンドラーを介してそれに応じて GUI を更新するためのスレッドを用意するつもりです。- そのアプローチについて何かコメントはありますか?

  • すべての低レベルの USB/CDC 通信、メッセージのシリアライゼーション/デシリアライゼーション、およびキューを介したアプリケーションへのメッセージのディスパスを処理するモジュール。これには別のスレッドが必要です。このスレッドを生成したアクティビティがなくなったという理由だけで、このスレッドが破棄されることは望ましくありません。私の本では IntentService が必要です。

  • タイミングを合わせて無線デバイスを制御するいくつかのシーケンス プレーヤー。これらは私のアクティビティの 1 つからトリガーされ、ホーム ボタンの押下、他のアクティビティの起動などのために停止することなく最後まで実行する必要があります。

  • 低レベル モジュールからのメッセージ受信時に、いくつかの「グローバル」データ構造 (おそらくデータベース) を更新するステータス モジュール。ここで私は困惑しています...これは私のメインアクティビティの作業スレッドである可能性があります-それとも3番目のIntentServiceを見ているのでしょうか?

すべてを 1 つのサービスに含めて、必要に応じてスレッドを追加する方がよいでしょうか?

私の初心者で申し訳ありません - Android は、前世紀に GUI 以外のバックグラウンド タスクをプログラミングしてきた C++ プログラマーにとって難しいものです。

前もって感謝します!!!

4

1 に答える 1