2016-05-26 17 views
1

サービスを開始したコンポーネントが破棄された場合でも、サービスは無期限にバックグラウンドで実行できます。アプリケーションが終了するとスレッドが停止しますか?

スレッドにはこの利点がありますか?

インターネットからファイルをダウンロードするスレッドがあれば、アプリケーションを閉じると停止しますか? サービスを利用する方が良いとわかっていますが、アプリケーションがサービスとして閉じられた後にスレッドが再開しますか?

答えて

0

スレッドは、アプリケーションが終了しても実行を継続します。ただし、スレッドが消費しているリソースの量によっては、OSによっていつでも削除される可能性があります。あなたのユースケースが何であるかはわかりませんが、スレッドが殺される可能性が高いため、ファイルをダウンロードするなどのバックグラウンドタスクを行うサービスをほとんど間違いなく使用してください。

中断しないでください(スレッドを開始したアプリケーションを閉じた後でも)バックグラウンドスレッドで作業している場合は、サービスを使用してフォアグラウンドでサービスを開始してください。これにより、通知バーに、バックグラウンドプロセスが実行中であることを通知するアイコンが作成されます。そうすることで、あなたのサービスは殺される可能性がはるかに低くなります。

Androidのドキュメントから:

フォアグラウンドサービスは、ユーザーがメモリ上の低殺傷するシステムのための候補者の積極的な意識であり、したがってない何かであると考えられていたサービスです。フォアグラウンドサービスはステータスバーの通知を提供する必要があります。ステータスバーは「進行中」見出しの下に置かれます。つまり、サービスが停止またはフォアグラウンドから削除されない限り、通知を破棄できません。

サービスにAndroidのドキュメントは続きを読むには良い場所です:

https://developer.android.com/guide/components/services.html#Foreground

が、スレッドは、アプリケーションをサービスとして閉じられた後に作業を再開しますか?

スレッドが決してkillされず、アプリケーションを再度開くと、スレッドはまだ実行されています。しかし、再び、OSがあなたのスレッドを殺す可能性が高いため、長時間実行されるバックグラウンドタスクにはサービスを使用する必要があります。

関連する問題