2

現在、いくつかのものを処理するサービスがあり、startService. サービスを開始した直後に `stopService を呼び出して、処理が完了した後にサービスを停止することを期待できますか?

または、そのコマンドを呼び出すと、Android はサービスを強制終了しますか?

4

3 に答える 3

2

数ミリ秒以上かかると仮定して、バックグラウンドスレッドで「何かを処理する」ことを望んでいます。

Android は、このようなバックグラウンド スレッドをほとんど意識していません。stopService()サービスがトリガーさonDestroy()れ、サービスはなくなります。ただし、スレッドは、それ自体が終了するまで、またはプロセスが終了するまで実行を続けます。

サービスを開始した直後に「stopService」を呼び出して、処理が完了した後にサービスを停止することを期待できますか?

「処理」がメイン アプリケーション スレッド (たとえば、 の本体onStartCommand()) で行われる場合のみです。これも、そのような作業に数ミリ秒以上かかる場合はお勧めできません。もしそうなら、そもそもサービスを提供する正当な理由はありません。

次のようなサービスをご希望の場合:

  • バックグラウンド スレッドがあり、かつ
  • 作業が完了すると自動的にシャットダウンします(必要性を回避しますstopService()

を使用しIntentServiceます。

于 2013-06-13T20:36:27.170 に答える