9

Intentservice の例が 2 つあります。1 つは、コモンズウェア ブックのダウンロードの例です。もう 1 つはhttp://www.vogella.com/articles/AndroidServices/article.html#servicecommunication_handlerにあります。これらの例はどちらも、サービスが有限のタスクを実行していることを示しており、onHandleIntent イベントのスコープの最後まで実行することで、明らかにサービス自体を破壊しています。

私が書いているサービスには、イベントがあり、物事をリッスンする必要があります。1 つは、GPS の動きをリッスンする LocationListener です。もう 1 つは、REST サービスへの投稿を作成し、返信をリッスンします。時間が経過するまで、または開始したアクティビティによって終了するように指示されるまで実行したい。

どうすれば実行し続けることができますか? たとえば、LocationListener の実装をどこに配置すればよいでしょうか。ありがとう、ゲイリー

4

3 に答える 3

16

どうすれば実行し続けることができますか?

あなたはそうしない。IntentService作業の一部を実行するように設計されています (または、コマンドがたまたま急速に着信した場合は、おそらくキューからいくつかの作業を行います)、その後シャットダウンします。

私が書いているサービスには、イベントがあり、物事をリッスンする必要があります。

次に、を使用しないでくださいIntentService。必要に応じて、独自のバックグラウンド スレッドで通常Serviceの を使用します。

于 2012-10-14T10:35:24.070 に答える
-1

START_STICKYサービスを実行し続けるには、サービスがサービスメソッドに戻る必要がありますonStartCommand()

これにより、アクティビティを終了してもサービスが実行されます。

注: Androidは、フォアグラウンドサービスでない場合でも、しばらくすると(30分から1時間)サービスを強制終了します。startForeground(notification)フォアグラウンドにするために使用します。

幸運を

于 2012-10-14T00:31:51.287 に答える
-1

これは、次の 2 つの方法のいずれかで実現できます。

AlarmManager は、特定の時間帯に特定のアクションを実行できるようにする Android の組み込みクラスです。

TimerTask は AlarmManager と同じことを行います。コードの特定のアクションを何度も繰り返すことができます。

ただし、AlarmManager は実行が軽いため、AlarmManager クラスを使用することをお勧めします。

GPS 座標を取得し、定期的にサーバーに送信する AlarmManager を作成します。

この AlarmManager Exampleをご覧ください。

于 2012-10-14T00:27:46.917 に答える