Service
は、バックグラウンドで長時間動作して操作を行うアプリ コンポーネントで、ユーザー インターフェースは表示しません。別のアプリ コンポーネントがサービスを開始でき、ユーザーが他のアプリに切り替えた場合でも、サービスはバックグラウンドで動作し続けます。さらに、コンポーネントをサービスにバインドして操作したり、プロセス間通信(IPC)を実行したりすることも可能です。たとえば、サービスはネットワーク トランザクションの処理、音楽の再生、ファイルの I/O の実行、コンテンツ プロバイダとのやり取りなどのすべてをバックグラウンドで行うことができます。
サービス (service)とは
・バックグラウンドで動くプログラムのこと。(バックグラウンドで作業をさせたい場合に使う)
・例えばバックグラウンドでの音楽再生やネットワークからのデータ取得など。
・サービスは Service クラス から生成します。
・サービスを実行するには、AndroidManifest.xmlにそのサービスを登録する。
・サービスは、Intentを使って開始することでどんなアプリでも使うことができる。
android公式から引用
サービス
サービスは、さまざまな理由によりアプリをバックグラウンドで実行し続けるための汎用エントリ ポイントです。長期間の操作やリモート プロセスを処理するためにバックグラウンドで実行されるコンポーネントです。サービスにはユーザー インターフェースがありません。たとえば、サービスはユーザーが別のアプリを使用している間にバックグラウンドで音楽を再生したり、ユーザーが別のアクティビティを操作している間にそれを妨げることなくネットワークからデータを取得したりします。アクティビティなどの他のコンポーネントが、サービスを開始して実行したり、サービスとやり取りするためにサービスにバインドしたりすることができます。アプリの管理方法についてサービスがシステムに通知するセマンティクスは 2 つあり、それぞれ異なる意味を持っています。開始されたサービスが、作業が終了するまで自身の実行を維持するようシステムに指示します。これにより、ユーザーがアプリから離れても、バックグラウンドでデータを同期したり、音楽を再生したりできます。バックグラウンドでのデータの同期や音楽の再生は、開始されたサービスとしてはそれぞれ異なるタイプと認識され、システムがそれらのサービスに対して行う処理もそれぞれ異なります。
- 音楽の再生はユーザーが直接意識しているものなので、アプリはフォアグラウンドになりたいことをユーザーに通知で知らせることで、システムにそれを指示します。この場合、システムはそのサービス プロセスの実行を維持するよう最善を尽くします。このプロセスが終了するとユーザーが不満を覚えるからです。
- 通常のバックグラウンド サービスは、その実行をユーザーが直接意識していません。したがって、システムはより柔軟にそのプロセスを管理できます。ユーザーにとってより緊急な課題を処理するために RAM が必要となった場合には、プロセスを強制終了し、後から再開できます。
他のアプリ(またはシステム)がサービスを利用することを明示しているなら、バインドされたサービスが実行されます。これは基本的に、別のプロセスに API を提供するサービスです。これにより、これらのプロセス間に依存関係があることをシステムは認識します。プロセス A がプロセス B のサービスにバインドされている場合に、システムはプロセス B とそのサービスの実行を A のために維持する必要があることを認識します。さらに、プロセス A がユーザーにとって優先度が高い場合は、プロセス B もユーザーにとって重要であるとみなされます。サービスは良くも悪くもその柔軟性から、さまざまな上位レベルのシステム コンセプトにおいて、非常に有用な構成要素となってきました。ライブ壁紙、通知リスナー、スクリーン セーバー、入力方法、ユーザー補助機能サービス、その他多くの主要なシステム機能はすべて、アプリが実行するサービスとしてビルドされ、その実行時にシステムによりバインドされます。
サービスは
Service
のサブクラスとして実装されます。Service
クラスの詳細については、デベロッパー ガイドのサービスをご覧ください。
サービスの概要
サービス (service)の種類
fa-chevron-circle-rightフォアグラウンド サービス
ユーザーが認識できる操作(オーディオの再生など)を行う。
fa-chevron-circle-rightバックグラウンド サービス
ユーザーには直接認識されない操作(ストレージの圧縮、データの取得等)を行う。
fa-chevron-circle-rightバインドされたサービス
アプリがbindService() を呼び出してサービスにバインドするもの。