インテントとは?
インテントは基本的に、コンポーネント(アクティビティ、サービス、ブロードキャスト レシーバー、コンテンツプロバイダーなど) 間で渡されるメッセージです。したがって、API 呼び出しに渡されるパラメーターとほぼ同等です。コンポーネントを呼び出す API 呼び出しとインテントの方法の基本的な違いは次のとおりです。
- API 呼び出しは同期的ですが、インテントベースの呼び出しは非同期的です。
- API 呼び出しはコンパイル時のバインディングであり、インテントベースの呼び出しは実行時のバインディングです。
もちろん、インテントは、後で説明する明示的インテントと呼ばれるものを使用して、API 呼び出しとまったく同じように機能させることができます。しかし、多くの場合、暗黙のインテントが有効であり、それがここで説明されていることです。
別のコンポーネントを呼び出したいコンポーネントは、ジョブを実行するという意図を表明するだけで済みます。そして、存在し、インテント フィルターを介してそのようなジョブを実行できると主張している他のコンポーネントは、ジョブを実行するために Android プラットフォームによって呼び出されます。これは、両方のコンポーネントが互いの存在を認識していないことを意味し、引き続き連携してエンド ユーザーに望ましい結果をもたらすことができます。
コンポーネント間のこの目に見えない接続は、インテント、インテント フィルター、および Android プラットフォームの組み合わせによって実現されます。
これは、次のような大きな可能性につながります。
- 実行時にコンポーネントを組み合わせたり、プラグ アンド プレイしたりします。
- 組み込みの Android アプリケーションをカスタム開発アプリケーションに置き換える。
- アプリケーション内およびアプリケーション間でのコンポーネント レベルの再利用。
- 私が言うことができるなら、最も細かいレベルへのサービス志向。
- これは意図に関する追加の説明です。ほぼ正式です。
インテントは、実行される操作の抽象的な記述です。startActivityと一緒に使用してアクティビティを起動し、 broadcastIntent を関連するBroadcastReceiverコンポーネントに送信し、 startService(Intent)またはbindService(Intent, ServiceConnection, int)と一緒に使用してバックグラウンド サービスと通信できます。
インテントは、異なるアプリケーション内のコード間で遅延ランタイム バインディングを実行するための機能を提供します。その最も重要な用途は、活動の開始であり、活動間の接着剤と考えることができます。これは基本的に、実行されるアクションの抽象的な記述を保持する受動的なデータ構造です。インテントの主な情報は次のとおりです。
- action
ACTION_VIEW、ACTION_EDIT、ACTION_MAIN など、実行される一般的なアクション。
- data
操作対象のデータ (連絡先データベースの個人レコードなど) で、Uri として表されます。
このデータ構造については、Android が実装されているということです。次のドキュメントを読むと非常に役立ちます。