15

IntentService の使用法について少し混乱しています。

  1. ドキュメントによると、IntentService は送信されたすべてのインテントをキューに入れ、一度に 1 つずつ処理します。
  2. IntentServiceのコードを調べたところ、onStartCommand()がインテントを受け取り、それをメッセージとしてインテント キューに送信するonStart()を呼び出すことがわかりました。

ドキュメントのどこかでonStartCommand()がシステムによって 1 回だけ呼び出されることを読んだことは確かです。 startService()を 2 回発行すると、2 回目の呼び出しではonStartCommand()が呼び出されません。
このドキュメントを探していたのですが、見つからないようなので、ここで間違っているかもしれません。
これは、onStartCommand() を介して IntentService で多くのインテントをキューに入れることができるという以前の概念と矛盾しています。

ここで助けが必要です。IntentService で複数のインテントをキューに入れるにはどうすればよいですか?

次の 2 つのオプションしか表示されません。

  • 異なるインテントで毎回startService()を呼び出すだけです

  • onStart()またはonStartCommand( )を直接呼び出す( startService()をバイパスする)

4

1 に答える 1

13

Intentwithを送信するとContext.startService()、 のサービスによって Intent が取得されますonHandleIntent()

初めて呼び出すstartService()と、サービスonStartCommand()が呼び出されます。コンストラクターと考えてください。サービスはすでに実行されているため、後続の への呼び出しstartService()でサービスを再度開始する必要はありません。サービスの への呼び出しが増えるだけonHandleIntent()です。

于 2013-02-12T13:28:24.887 に答える