0

a) コードがstartService()2 回呼び出された場合、インテントは呼び出した順序で処理されますか、それともランダムに切り替えられますか?

b) onStartCommand()2 番目の呼び出しが開始される前に最初の実行が完了するか、それとも並行して実行されるか?

Android サービス ガイドとリファレンスを読みました。ワーカー スレッドがどのようにシリアル化されるかは明確に示さIntentServiceれていますが、インテントがどのように配信および処理されるかについてはほとんど情報が見つかりませんでした。

4

1 に答える 1

2

コードで startService() を 2 回呼び出した場合、呼び出した順序でインテントが処理されるのでしょうか、それともランダムに切り替えられるのでしょうか?

この点に関するの動作Serviceは文書化されていません。最後に確認しました。ただし、実際に発生するように見えることに基づいて、発行された順序で呼び出す必要があります。

最初の onStartCommand() の実行は、2 番目の呼び出しが開始される前に完了しますか、それとも並行して実行されますか?

あれは君次第だ。デフォルトでは、onStartCommand()on aServiceはメイン アプリケーション スレッドで呼び出されるため、一度に 1 つのコマンドのみが処理されます。コマンドを処理するためにスレッドをフォークすることを選択した場合onStartCommand()、それらのスレッドは並行して実行される場合があります。

IntentService ワーカー スレッドがどのようにシリアル化されるかは明確に示されていますが、インテントがどのように配信および処理されるかについてはほとんど情報が見つかりませんでした。

IntentService独自のスレッドを維持します。onHandleIntent()の代わりに (または追加で)実装しonStartCommand()ます。スレッドは 1 つしかないためonHandleIntent()、一度に実行されるのは 1 つだけです。

于 2012-12-12T15:43:30.553 に答える