0

現在、デスクトップでサーバーを実行しています。アプリを起動し、ボタンを押してこのサーバーからのデータ収集を開始し、もう一度ボタンを押すと停止できるようにしたいと考えています。アプリがアクティブでない場合でも、ユーザーはボタンを押した後、常にこのサーバーからデータを取得する必要があります。これまでのところ、サービスをセットアップするか、スレッドを単独で使用することを検討しました。

A Service は私が必要としているものとまったく同じように聞こえますが、長いネットワーク接続を維持するためのものではないと言われました。BluetoothChat サンプル アプリケーションを調べてみましたが、Service は使用されませんでした。その場合、サービスを使用するのが適切でしょうか、それともサンプル アプリケーションのようにスレッドで実装する必要がありますか? 長い接続が必要な唯一の理由は、サーバーからのエラー レポートをリッスンするためです。他のネットワーク関連の問題は、ユーザーがアプリを直接使用している場合にのみ発生します。サービスはそれを呼び出すアクティビティと同じスレッドで実行されるため、とにかくスレッドを使用する必要がありますが、私の主な質問は、サービス部分を破棄する必要があるかどうかだと思います。現在、送信されたメッセージを処理できる基本的なサービスのセットアップがあり、非常に使いやすいようです。それに関するドキュメントはいたるところにあり、

4

1 に答える 1

1

Service は UI スレッドで実行されますが、IntentService は独自のスレッドで実行されます。

「アプリ」がアクティブでないと言うのは曖昧です。Service を実行している場合、それは常にアクティブです。IntentService は、その onHandleIntent() メソッドで作業を終了している限りアクティブです。アプリのアクティビティがアクティブでない可能性があります。これは、アプリがバックグラウンドにあることを意味します。

それ以外に、あなたが何をしようとしているのかについてもっと知る必要があります。一般に、接続を常に開いたままにしようとするよりも、定期的にデータを収集することをお勧めします。たとえば、デバイスがインターネットへの接続を失った場合はどうしますか?

于 2012-06-09T00:06:50.463 に答える