コードで startService() を 2 回呼び出した場合、呼び出した順序でインテントが処理されるのでしょうか、それともランダムに切り替えられるのでしょうか?
この点に関するの動作Service
は文書化されていません。最後に確認しました。ただし、実際に発生するように見えることに基づいて、発行された順序で呼び出す必要があります。
最初の onStartCommand() の実行は、2 番目の呼び出しが開始される前に完了しますか、それとも並行して実行されますか?
あれは君次第だ。デフォルトでは、onStartCommand()
on aService
はメイン アプリケーション スレッドで呼び出されるため、一度に 1 つのコマンドのみが処理されます。コマンドを処理するためにスレッドをフォークすることを選択した場合onStartCommand()
、それらのスレッドは並行して実行される場合があります。
IntentService ワーカー スレッドがどのようにシリアル化されるかは明確に示されていますが、インテントがどのように配信および処理されるかについてはほとんど情報が見つかりませんでした。
IntentService
独自のスレッドを維持します。onHandleIntent()
の代わりに (または追加で)実装しonStartCommand()
ます。スレッドは 1 つしかないためonHandleIntent()
、一度に実行されるのは 1 つだけです。