現在、いくつかのものを処理するサービスがあり、startService
. サービスを開始した直後に `stopService を呼び出して、処理が完了した後にサービスを停止することを期待できますか?
または、そのコマンドを呼び出すと、Android はサービスを強制終了しますか?
数ミリ秒以上かかると仮定して、バックグラウンドスレッドで「何かを処理する」ことを望んでいます。
Android は、このようなバックグラウンド スレッドをほとんど意識していません。stopService()
サービスがトリガーさonDestroy()
れ、サービスはなくなります。ただし、スレッドは、それ自体が終了するまで、またはプロセスが終了するまで実行を続けます。
サービスを開始した直後に「stopService」を呼び出して、処理が完了した後にサービスを停止することを期待できますか?
「処理」がメイン アプリケーション スレッド (たとえば、 の本体onStartCommand()
) で行われる場合のみです。これも、そのような作業に数ミリ秒以上かかる場合はお勧めできません。もしそうなら、そもそもサービスを提供する正当な理由はありません。
次のようなサービスをご希望の場合:
stopService()
)を使用しIntentService
ます。