私はAndroidで正しくサービスを使用する方法についていくつかのアドバイスを探しているアンドロイドのnoobです。 TCP経由でデータストリームを取得するために、インターネット上のサーバーに接続するアプリケーションを構築しています。そのデータは、Bluetoothシリアルポート経由で接続されている別のデバイスに送信する必要があります。ユーザーが別のアクティビティを見ている間、この機能をバックグラウンドで引き続き機能させたいと思っています。Androidサービスのデザイン - アクティビティを開始するか、必要なときにのみ開始しますか?
このアプリは、インターネットからリアルタイムRTK補正データを取得し、ブルートゥース経由でRTK GPS受信機に送信するNTRIPクライアントになります。データレートは約500バイト/秒になります。ユーザーインターフェイスは、データストリームを接続または切断するための単一のボタンと、GPS受信機のステータスを示すテキストです。また、接続するサーバーのIP /ポートや通信するブルートゥースデバイスなど、ユーザーが設定する必要がある設定がいくつかあります。
私は主な活動がローカルサービスを生成し、サービスがTCPストリーム用のスレッドを生成し、Bluetooth接続用のスレッドをスポーンする必要があると思います。これは正しいと思いますか?
このシナリオでは、サービスに最適なモデルは何ですか?
- アクティビティが開始するたびにサービスを開始(バインド)し、接続/切断ボタンでサービスにコマンドを送信してスレッドを開始/停止させます。私がこのルートに行くと、ユーザーが切断して別のアプリに行くと、サービスは引き続き実行されます。このサービスは、自身を終了させるための休止タイマーが必要です。
- ユーザーが接続/切断ボタンを押したときにサービスを開始し、サービスを停止します。このサービスは、データが移動しているときにのみ実行されます。これを行うと、アクティビティの起動時にサービスが実行されているかどうかを確認して、サービスにバインドする必要があるかどうかを知るか、リンクが切断されたことをユーザーに伝える必要があります。
ありがとうございました。
部分的に間違っていて、他の部分は完全に混乱している可能性があります。 –