【Android】フォアグラウンドサービスとバックグラウンドサービス概念の違いを簡単にまとめました。
最初に
サービス機能はアンドロイドで非常に重要な機能の一つです。バックグラウンドでダウンロードを進めたり、音楽をプレイするなど多様な形態のアプリを作ることができます。サービスは基本的にフォアグラウンドサービス(Foreground Service)とバックグラウンドサービス(Background Service)があります。この記事では二つのサービスの概念と違いをまとめました。
サービスとは?
サービスはバックグラウンドで長く実行される作業を遂行できるアプリコンポーネントです。UIを提供しないです。 他のアプリコンポーネントがサービスを開始することができ、これはユーザーが他のアプリに切り替えてもバックグラウンドで実行され続けます。
フォアグラウンドサービス(Foreground Service)
フォアグラウンドサービスは、通常、ユーザーに対する重要な通知や情報の提供を行うために使用されます。例えば、音楽プレイヤーアプリが曲を再生中であり、通知バーに再生中の曲情報を表示するためにフォアグラウンドサービスを使用します。
フォアグラウンドサービスは、バックグラウンドで長時間実行されるタスクを実行する際に、システムによる優先度付けを受けることがあり、バッテリーやメモリの最適化による制約を受けにくいです。
バックグラウンドサービス(Background Service)
バックグラウンドサービスは、ユーザーに直接通知を送る必要がないタスクやサービスで使用されます。例えば、データの同期やバックアップ、ネットワーク通信を行うサービスなどがバックグラウンドサービスとして実行されます。
バックグラウンドサービスは、通知を表示せずに実行できます。ユーザーはその存在を通常意識しないことがあります。
バックグラウンドサービスは、システムのリソース制約により、バッテリーやメモリの最適化の対象となり、システムが必要に応じてその実行を停止することがあります。
フォアグラウンドサービスとバックグラウンドサービス
フォアグラウドサービスはユーザーエクスペリエンスに対して重要で、通知を表示し、ユーザーがサービスを認識できる状態で実行されます。一方、バックグラウンドサービスはユーザーにより目立たず、ユーザーに通知を送らずに裏でタスクを実行するために使用されます。 Androidは、二つのタイプのサービスを区別しています。
二つの違いを簡単に言うと「画面に見えるか、あるいは見えないかの違い」だと思います。
例えば、モバイルゲームをしてしばらくホーム画面に出て、数秒後にゲームに戻れば、ゲームが終了せずに進行し続けるのをたまに見えます。 もちろん、ゲーム開発会社がゲーム画面を長く離れると、強制的に終了させたり、アンドロイドシステムが資源を多く使うとバックグラウンド作業だと判断して終了することができますが、しばらく出て戻ってくるのは維持されるのます。 すなわち、画面には見えないがアプリが継続実行中の状態をバックグラウンドプロセスと見えます、これはアンドロイドシステムが資源が不足していると判断した場合、強制的に終了することができます。逆に、画面でアプリがどのような作業をしているのかを目で直接確認できることをフォーグラウンドプロセスと見えます、簡単に言えばユーチューブを見たりウェブサーフィンをしたりすることをフォーグラウンドプロセスです。
フォアグラウンド、バックグラウンドサービスはアプリでサービスを「開始」することです。 実際にstartService()を使って、「アプリが終了してもバックグラウンドプロセス状態になっても、(startService()を使って)引き受けた作業は続けてください。」という意味です。 すなわち、サービスを一度始めれば、作業が完了するかやむを得ず終了するのでなければ、アプリが終了しても作業は続けます。
Discussion