さまざまな端末構成に合わせてアプリの動作を最適化するための、アプリコードから分離されたリソース。アプリに不可欠な構成要素です。一部のコンポーネントは他のコンポーネントに依存しています。つのタイプがあります。プロバイダ各タイプは異なる目的を果たし、コンポーネントの作成方法や破棄方法を定義するライフサイクルもそれぞれ異なります。コンポーネントについては、以降のセクションで説明します。つの画面で表されます。メールアプリには、新着メールの一覧を表示するアクティビティ、メールを作成するアクティビティ、そしてメールを閲覧するアクティビティがあります。エクスペリエンスを形成しますが、それぞれのアクティビティは他のものから独立しています。したがって、これらのアクティビティのいずれかを、別のアプリから開始することができます(メールアプリが許可している場合)。カメラアプリからメールアプリの新規メールを作成するアクティビティを開始できます。そのようにして、ユーザーが写真をメールで共有できるようにします。アクティビティは、システムとアプリ間における次の重要なインタラクションを行えるようにします。アクティビティをホストしているプロセスを継続的に実行するために、ユーザーの現在の操作内容(画面の表示)を追跡。以前に使用されたプロセス(停止されたアクティビティ)のうち、ユーザーが再度アクセスする可能性があるものを検知し、それらの優先順位を上げてプロセスを維持。アプリがプロセスを強制終了した場合に、ユーザーが以前の状態を復元したアクティビティに戻れるように支援。アプリ間でのユーザーフローをアプリが実装する手段と、システムがそれらのフローを連携させるための手段を提供(ここでは最も一般的な例を説明します)。クラスのサブクラスとして実装します。ガイドのアクティビティをご覧ください。プロセスを処理するためにバックグラウンドで実行されるコンポーネントです。インターフェースがありません。サービスはユーザーが別のアプリを使用している間にバックグラウンドで音楽を再生したり、ユーザーが別のアクティビティを操作している間にそれを妨げることなくネットワークからデータを取得したりします。アクティビティなどの他のコンポーネントが、サービスを開始して実行したり、サービスとやり取りするためにサービスにバインドしたりすることができます。あり、それぞれ異なる意味を持っています。開始されたサービスが、作業が終了するまで自身の実行を維持するようシステムに指示します。これにより、ユーザーがアプリから離れても、バックグラウンドでデータを同期したり、音楽を再生したりできます。バックグラウンドでのデータの同期や音楽の再生は、開始されたサービスとしてはそれぞれ異なるタイプと認識され、システムがそれらのサービスに対して行う処理もそれぞれ異なります。音楽の再生はユーザーが直接意識しているものなので、アプリはフォアグラウンドになりたいことをユーザーに通知で知らせることで、システムにそれを指示します。プロセスの実行を維持するよう最善を尽くします。このプロセスが終了するとユーザーが不満を覚えるからです。サービスは、その実行をユーザーが直接意識していません。したがって、システムはより柔軟にそのプロセスを管理できます。必要となった場合には、プロセスを強制終了し、後から再開できます。他のアプリ(またはシステム)がサービスを利用することを明示しているなら、バインドされたサービスが実行されます。提供するサービスです。これにより、これらのプロセス間に依存関係があることをシステムは認識します。ために維持する必要があることを認識します。ユーザーにとって重要であるとみなされます。コンセプトにおいて、非常に有用な構成要素となってきました。セーバー、入力方法、ユーザー補助機能サービス、その他多くの主要なシステム機能はすべて、アプリが実行するサービスとしてビルドされ、その実行時にシステムによりバインドされます。サブクラスとして実装されます。ガイドのサービスをご覧ください。クラスを使用してください。連携することにより、電池の消費が抑えられます。リファレンス資料をご覧ください。レシーバは、通常のユーザーフローを外れて、システムがアプリにイベントを配信できるようにするコンポーネントです。アナウンスに応答できます。レシーバは明確に定義されたアプリへのエントリであるため、システムは実行中でないアプリに対してもブロードキャストを配信できます。したがってアプリが、たとえば、近づいているイベントについてユーザーに知らせる通知を投稿するためのアラームをスケジューリングすることができます。アラームを配信することにより、そのアラームが作動するまでアプリの実行を維持する必要がなくなります。画面がオフになったことを通知するブロードキャスト、電池が残り少ないことを通知するブロードキャスト、画像がキャプチャされたことを通知するブロードキャストなどです。端末にデータがダウンロードされ使用できることを他のアプリに知らせる場合などです。イベントの発生時にユーザーにアラートできます。レシーバは他のコンポーネントへの単なるゲートウェイであり、最小限の作業を行うことが前提となっています。スケジュール設定する場合などです。オブジェクトとして配信されます。クラスをご覧ください。データベース、ウェブ、またはアプリからアクセス可能な他の永続的なストレージの場所に保存できるアプリデータの共有されている部分を管理します。プロバイダが許可している場合)。プロバイダを提供しています。クエリして、特定の人物に関する情報を読み取ったり書き込んだりできます。プロバイダをデータベースの抽象化として考えたくなるかもしれません。プロバイダには別の目的があります。他のエンティティに渡してデータにアクセスできるようにするかを決めることができます。アプリの管理に関して、システムでは以下が実行できます。アプリのデータを取得する必要があるときに、所有しているアプリが実行中であることだけです。プロバイダをロックしたままにできます。あるデータのみにアクセスすることを許可します。その他のデータにはアクセスできません。プロバイダは、アプリだけに公開されている、他で共有されていないデータを閲覧したり書き込んだりする場合にも役立ちます。標準セットを実装する必要があります。プロバイダをご覧ください。デザインによって、どのアプリからでも別のアプリのコンポーネントを開始できます。ユーザーに端末のカメラで写真を撮影してほしい場合、その機能を備えた別のアプリがあるので、写真を撮影するアクティビティを自身で開発する代わりに、それを使用するようにできます。カメラアプリのコードを組み込んだり、リンク付けしたりする必要はありません。代わりに、写真を撮影するカメラアプリのアクティビティを開始するだけです。完了後、写真はアプリに返され、それを使用することができます。ユーザーには、カメラがアプリの一部であるかのように見えます。システムがコンポーネントを開始すると、そのアプリのプロセスがまだ実行されていない場合にはプロセスを開始し、コンポーネントに必要なクラスをインスタンス化します。写真を撮影するカメラアプリのアクティビティをアプリで開始すると、そのアクティビティはアプリのプロセスではなく、カメラアプリのプロセスで実行します。他のシステムでは各アプリを別々のプロセスで実行しており、かつ他のアプリへのアクセスを制限するファイル許可があるので、別のアプリのコンポーネントを直接アクティベートすることはできません。システムならそれができます。別のアプリのコンポーネントをアクティベートするには、特定のコンポーネントを開始するインテントを指定するメッセージをシステムに配信します。その後、システムが代わりにコンポーネントをアクティベートします。インテントと呼ばれる非同期メッセージによりアクティベートされます。インテントは個々のコンポーネントをランタイム時に互いにバインドします。コンポーネントが属しているアプリが何であるかにかかわらず、他のコンポーネントからのアクションをリクエストするメッセンジャーとみなすことができます。オブジェクトを使用して作成されます。これで、特定のコンポーネント(明示的インテント)、もしくは特定のタイプのコンポーネント(暗黙的インテント)をアクティベートするメッセージを定義します。指定することもできます。インテントは、画像を表示したり、ウェブページを開いたりするアクティビティを求めるリクエストを伝達できます。結果を受け取るようなアクティビティを開始することもできます。結果を返すこともできます。ユーザーが個人の連絡先を選んで、あなたに返すことができるようなインテントを発行できます。レシーバの場合、インテントは単純にブロードキャストされるアナウンスを定義します。端末の電池の残量が少ないことを示すブロードキャストには、電池が少ないことを示す既知のアクション文字列のみが含まれます。プロバイダはインテントではアクティベートされません。リクエストにより指定された場合にアクティベートされます。オブジェクトのメソッドを呼び出します。プロバイダと情報をリクエストしているコンポーネントとの間に(セキュリティ目的で)抽象的な層ができます。それぞれのタイプのコンポーネントをアクティベートする個別のメソッドがあります。startActivityForResult()(アクティビティから結果を取得する場合)に渡します。クラスを使用してアクションをスケジュール設定できます。