2012-01-03 3 views
7

Androidでintentserviceを停止する方法を教えてもらえますか?アンドロイドでintentserviceを停止するには?

stopserviceを使用してインテントサービスを停止すると、機能しません。

私はウェブサイトを閲覧しましたが、誰もこの質問に明確な答えを示していません。

答えて

5

stopSelf()をサービス内から呼び出してみてください。 documentationには、処理が完了するまでに時間がかかることがあるため、サービスが停止するのを待っている可能性が高いと言われています。おそらくそれを調べるべきです。すべての要求が完了すると、サービスは停止します。

+0

私はアクティビティからそれを停止できますか? – user1127497

+1

私が言ったように、 'stopService'が助けにならないならば、プロセスはそれを突き止めています。 'protected abstract void onHandleIntent(Intent intent) 導入されたバージョン:APIレベル3 このメソッドは、処理要求を持つワーカースレッド上で呼び出されます。一度に1つのインテントしか処理されませんが、処理は他のアプリケーションロジックとは独立して実行されるワーカースレッド上で行われます。したがって、このコードが長い時間がかかると、同じIntentServiceへの他のリクエストを保持しますが、それ以外のものは保持しません。すべてのリクエストが処理されると、IntentService自体が停止しますので、stopSelf()を呼び出さないでください。 ' –

+2

意味stopServiceを呼び出すと、intentserviceにインテントが送信されます。インテントサービスがすでにキューに複数のインテントを持っている場合、そのインテントが処理されるまで "stopservice intent"は処理されません。 – user1127497

5

最後のインテントがonHandleIntent(Intent)によって処理されると、IntentServiceが自動的に停止するように構築されています。つまり、停止する必要はありません。完了すると自動的に停止します。

1

documentationによると、Androidはすべての開始リクエストが処理された後にサービスを停止するため、stopSelf()を呼び出す必要はありません。

1

誰かが同じ問題を抱えている場合には、 <yourContext>.stopService(intent)に電話をした場合、intentと同じのインテントオブジェクトを使用してサービスを開始しました。

1

IntentServiceは、作業キューにあるすべての要求が処理されたときにのみ停止するように設計されています。ドキュメントごとに、IntentServiceクラス"開始要求のすべてが処理された後にサービスを停止するstopSelf()を呼び出す

関連する問題