2

リモートバックグラウンドサービスを実装するアプリケーションがあります。このサービスは、スレッド内のファイルをダウンロードするために実装されています(このサービスはダウンロードマネージャーとして機能すると思います)。

ファイルをダウンロードしたいときは、URLをサービスに送信すると、サービスがスレッドを開始し(AsyncTaskを使用していましたが、Android 4.1でのみ機能しました)、実際にファイルをダウンロードします。しかし、遅かれ早かれダウンロードが停止し、表示する通知が更新されなくなったため、それを知ることができました。通知をクリックしてダウンロードをキャンセルすると、保留中のインテントがサービスに送信され、ダウンロードをキャンセルするように指示されますが、サービスが再作成される(onCreateが呼び出される)ため、ダウンロードはキャンセルされません。

編集: onStartCommand()でSTART_STICKYを返すと言うのを忘れました

どのような解決策がありますか?サービスが強制終了されないようにする方法はありますか?

startForeground()も調べていましたが、サービスターゲットが1つのファイルのみをダウンロードすることであれば問題ありませんが、複数のファイルを同時にダウンロードするためのサポートが必要です。

ありがとうございました。

4

2 に答える 2

2

サービスが強制終了されるのを防ぐ唯一の方法は、を使用することstartForeground()です。これでも、Android がサービスを停止しないという保証はありませんが、これ以上のことはありません。私たちはフォアグラウンド サービスを使用して大きな成功を収めました。

于 2012-11-07T12:58:16.793 に答える