Androidのインテントとは何ですか?


347
  • Androidのインテントとは何ですか?
  • 誰かが例で詳しく説明できますか?
  • インテントの種類と、それらを使用する理由は何ですか?
  • Androidでインテントがそれほど重要なのはなぜですか?

メッセージベースのオペレーティングシステムであるWindowsのように、ユーザー入力をプログラムに通知し、メッセージを送信します。Androidは、それを行う意図を使用しています!
AminM 2014

回答:


486

意図は、アクションを実行するための「意思」です。言い換えると、

別のアプリコンポーネントからアクションをリクエストするために使用できるメッセージングオブジェクト

インテントは、基本的には、あなたが何かをしたか、何かを起こしたいというメッセージです。インテントによっては、アプリまたはOSがそれをリッスンしていて、それに応じて反応する場合があります。それを、友人Johnに何かをするように言う、またはX(「インテントフィルター」)を実行してXを実行できる友人に送信するブラストメールと考えてください。他の人々はこのメールを無視します。しかし、ジョン(またはXを実行できる友達)はそれに反応します。

ブロードキャストインテント(電話の呼び出し音やSMSの受信など)をリッスンするには、インテントが渡されるブロードキャストレシーバーを実装します。「写真を撮る」など、別のアプリのインテントを処理できることを宣言するには、アプリのマニフェストファイルでインテントフィルターを宣言します

ダイヤラをポップアップするなど、何かをするためにインテントを発射したい場合は、インテントを発動してその旨を伝えます。


1
@Chirag Ravalインテントリスナーとアクションリスナーの違いは何ですか?
Mayooran 2014年

1
最後の文をもう一度説明してもらえますか?あなたが
解雇

1
C#デリゲートに似ていますか?
ポール

実際にアクションとは、インテントを使用して、あるコンポーネントを別のコンポーネントから開始できることを意味します。それが主に使用されます。
Sreekanth Karumanaghat 2017

また、これに追加する...インテントは非同期です。
Sreekanth Karumanaghat 2017

165

インテントとは何ですか?

インテントは、基本的に間で渡されるメッセージである構成要素(例えば、アクティビティサービス、ブロードキャストレシーバ、およびコンテンツプロバイダ)。したがって、API呼び出しに渡されるパラメーターとほぼ同じです。API呼び出しとインテントを介したコンポーネントの呼び出しの基本的な違いは次のとおりです。

  • API呼び出しは同期的ですが、インテントベースの呼び出しは非同期的です。
  • API呼び出しはコンパイル時バインディングであり、インテントベースの呼び出しはランタイムバインディングです。

もちろん、インテントは、明示的なインテントと呼ばれるものを使用して、API呼び出しとまったく同じように機能させることができます。これについては、後で説明します。しかし、たいていの場合、暗黙の意図が進むべき道であり、それがここで説明されています。

別のコンポーネントを呼び出したいコンポーネントは、ジョブを実行する意図のみを表明する必要があります。そして、存在し、intent-filtersを介してそのようなジョブを実行できると主張している他のコンポーネントは、Androidプラットフォームによって呼び出され、ジョブを実行します。つまり、どちらのコンポーネントも互いの存在を認識していませんが、エンドユーザーに望ましい結果を提供するために連携して機能することができます。

コンポーネント間のこの目に見えない接続は、インテント、インテントフィルター、およびAndroidプラットフォームの組み合わせによって実現されます。

これにより、次のような大きな可能性が生まれます。

  • 実行時にコンポーネントを組み合わせて、プラグインして再生します。
  • 組み込みのAndroidアプリケーションをカスタム開発アプリケーションに置き換える。
  • アプリケーション内およびアプリケーション間でのコンポーネントレベルの再利用。
  • 私が言うなら、最も細かいレベルへのサービス指向。

Androidドキュメントのインテントに関する技術的な詳細は次のとおりです。

インテントは、実行される操作の抽象的な説明です。それと共に使用することができるstartActivity起動するbroadcastIntent、アクティビティの利害に送信するBroadcastReceiverのコンポーネント、およびSTARTSERVICE(インテント)又はbindService(インテント、ServiceConnection、INT)は、バックグラウンドサービスと通信します。

インテントは、異なるアプリケーションのコード間で実行時バインディングを実行する機能を提供します。その最も重要な用途は、アクティビティの起動であり、アクティビティ間の接着剤と考えることができます。これは基本的に、実行されるアクションの抽象的な記述を保持するパッシブデータ構造です。インテントの主要な情報は次のとおりです。

  • action ACTION_VIEW、ACTION_EDIT、ACTION_MAINなど、実行される一般的なアクション。
  • data Uriとして表される、連絡先データベースの個人レコードなど、操作するデータ。

もっと詳しく知る


4
この説明では、コンピュータサイエンスの概念を使用していただきありがとうございます。これにより、ディスカッションがより具体的になり、特にコンピュータサイエンスの学位を持つ読者に役立ちます。
Donal Lafferty、2015年

49

インテントは、何をしたいかをAndroid伝える方法です。つまり、あなたの意図を説明します。インテントは、特定のイベントが発生したことをAndroidシステムに通知するために使用できます。Androidの他のコンポーネントは、インテントフィルターを介してこのイベントに登録できます。

以下は2種類のインテントです

1.明示的な意図

特定のコンポーネントを呼び出すために使用されます。起動するコンポーネントがわかっていて、どのコンポーネントを使用するかをユーザーに自由に制御させたくない場合。たとえば、2つのアクティビティを持つアプリケーションがあるとします。アクティビティAとアクティビティB。アクティビティAからアクティビティBを起動します。この場合、アクティビティBをターゲットとする明示的なインテントを定義し、それを使用して直接呼び出します。

2.暗黙の意図

何をしたいかはわかっているが、どのコンポーネントを起動するかわからない場合に使用します。または、使用するコンポーネントのリストから選択するオプションをユーザーに提供する場合。これらのインテントがAndroidシステムに送信されると、特定のアクションとデータ型に対して登録されているすべてのコンポーネントが検索されます。コンポーネントが1つしか見つからない場合、Androidはコンポーネントを直接起動します。たとえば、カメラを使用して写真を撮るアプリケーションがあるとします。アプリケーションの機能の1つは、ユーザーが撮影した写真を送信できるようにすることです。ユーザーが写真を送信できるアプリケーションの種類がわからない。また、ユーザーに複数の外部アプリケーションがある場合に使用する外部アプリケーションを選択するオプションをユーザーに提供したい。この場合、明示的な意図は使用しません。

明示的なインテントは、何が含まれていても、常にそのターゲットに配信されます。フィルターは参照されません。ただし、暗黙的なインテントは、コンポーネントのフィルターの1つを通過できる場合にのみコンポーネントに配信されます。

意図フィルター

インテントがAndroidシステムに送信されると、このインテントに適したアプリケーションが決定されます。このタイプのインテントに対して複数のコンポーネントが登録されている場合、Androidはユーザーにそれらの1つを開く選択肢を提供します。

この決定は、IntentFiltersに基づいています。IntentFiltersは、アクティビティ、サービス、またはブロードキャストレシーバーが応答できるインテントのタイプを指定します。インテントフィルターは、コンポーネントの機能を宣言します。これは、アクティビティまたはサービスが実行できること、およびレシーバーが処理できるブロードキャストのタイプを指定します。これにより、対応するコンポーネントが宣言された型のインテントを受け取ることができます。IntentFiltersは通常、AndroidManifest.xmlファイルを介して定義されます。BroadcastReceiverの場合、コーディングで定義することもできます。IntentFiltersは、そのカテゴリ、アクション、およびデータフィルタによって定義されます。追加のメタデータを含めることもできます。

コンポーネントがインテントフィルターを定義していない場合、明示的なインテントによってのみ呼び出すことができます。

以下は、フィルタを定義するには2通りの方法が

1.マニフェストファイル

マニフェストでインテントフィルターを定義した場合、そのフィルターで定義されたインテントに反応するためにアプリケーションを実行する必要はありません。Androidは、アプリケーションがインストールされるとフィルターを登録します。

2.BroadCastレシーバー

あなたのしたい場合は、放送受信機は、アプリケーションが実行されている唯一の意図を受信します。次に、実行時に(プログラムで)インテントフィルターを定義する必要があります。これは放送受信機でのみ機能することに注意してください。


12

単一のアクティビティを書き込んだ後、別のアクティビティに移行して、最初のアクティビティからの情報の有無にかかわらず、別のタスクを実行する必要があります。

Androidプラットフォームでは、Intent Interfaceを使用して移行できます。

言葉はここから取られています:Intent Demo使用して、コードファイルも提供されているため、この例を試してみることをお勧めします。それを使用して、簡単に理解できます。


インテントは、アクティビティ間の移行以上のものです。概要を示すとより役立ちます。
Vaddadi Kartick 2014年

@KartickVaddadiあなたの意見に同意します。これは、Intentの1つの使用法に対する私の答えでした。
Paresh Mayani 2014年


9

Androidインテント

Androidインテントを使用すると、1つのAndroidアクティビティから別のアクティビティに移動できます。このチュートリアルでは例とともに、さまざまなタイプのAndroidインテントについても説明します。

Androidインテントは、あるアクティビティから別のアクティビティへの通信に使用される単純なメッセージオブジェクトとして定義できます。

インテントは、アプリケーションの意図を定義します。また、アクティビティ間のデータ転送にも使用されます。

Androidインテントを使用して、次の3つのタスクを実行できます。

  1. 現在のアクティビティから別のアクティビティまたはサービスを開く
  2. アクティビティとサービスの間でデータを渡す
  3. 責任を別のアプリケーションに委任します。たとえば、インテントを使用してブラウザアプリケーションを開き、URLを表示できます。

インテントは、大きく2つのカテゴリに分類できます。このカテゴリのキーワードはなく、Androidインテントの使用方法の大まかな分類のみです。

明示的なAndroidインテント

Explicit Android Intentは、Androidシステムが呼び出す必要のあるコンポーネントを明示的に定義するインテントです。

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

暗黙のAndroidインテント

暗黙のAndroidインテントは、正確なコンポーネントを定義する代わりに、実行するアクションを定義するインテントです。このアクションを処理するかどうかの決定は、オペレーティングシステムに任されています。OSは、暗黙的インテントで実行するのに最適なコンポーネントを決定します。例を見てみましょう:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

詳細については、以下をご覧ください。

http://developer.android.com/reference/android/content/Intent.html


9

彼らのドキュメントによると:

インテントは、個別のコンポーネント(2つのアクティビティなど)間のランタイムバインディングを提供するオブジェクトです。インテントは、アプリの「何かをする意図」を表します。インテントはさまざまなタスクに使用できますが、ほとんどの場合、別のアクティビティを開始するために使用されます。

ここに例のリンクがあります:http : //developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

ドキュメントに記載されているように、アクティビティを開始するには(アクティビティも理解する必要があります)、以下のようなインテントを使用します

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

8

インテントは、実行される操作の抽象的な説明です。startActivityと一緒に使用してアクティビティを起動し、broadcastIntentを使用して興味のあるBroadcastReceiverコンポーネントに送信し、startService(Intent)またはbindService(Intent、ServiceConnection、int)を使用してバックグラウンドサービスと通信できます。

詳細については、次のリンクを参照してください。

1)。 http://developer.android.com/reference/android/content/Intent.html

2) http://developer.android.com/guide/topics/intents/intents-filters.html

3)。http://www.vogella.de/articles/AndroidIntent/article.html

より多くの記事が利用可能です。


5

インテントとは何ですか?

これは、コンポーネントに渡される一種のメッセージまたは情報です。アクティビティの起動、Webページの表示、SMSの送信、Eメールの送信などに使用されます。

Androidには2種類のインテントがあります。

暗黙的インテント
明示的インテント

暗黙的インテントは、システムコンポーネントを呼び出すために使用されます

Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));

startActivity(i);

明示的なインテントは、アクティビティクラスを呼び出すために使用されます。

インテントintent = newIntent(this、SecondActivity.class);

startActivity(intent);

あなたはもっと読むことができます

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html


2

インテントは、いくつかのアクションを実行するための情報をバインドするクラスです。

例:ユーザーがそのようなアクションを実行するときに、あるアクティビティを別のアクティビティにデータを渡す

現在の活動。


1

広義では、意図を次のように定義できます。

あるアクティビティが別のアクティビティを開始したい場合、開始したいアクティビティを指定するIntentというオブジェクトを作成します。


0

Androidアプリケーションには、0個以上のアクティビティを含めることができます。アプリケーションに複数のアクティビティがある場合、多くの場合、あるアクティビティから別のアクティビティに移動する必要があります。Androidでは、インテントと呼ばれるものを通じてアクティビティ間を移動します。putExtra()を使用して、意図的に開始するアクティビティにデータを渡すことができます。


0

紙のリンクからDeep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013

意図はいくつかの小さいが効果的な行で理解されています

  1. Androidは、インテントを介してIPC(プロセス間通信)の単純な形式をサポートしています
  2. インテントメッセージングは​​、Androidコンポーネント(アクティビティ、サービス、コンテンツプロバイダー、ブロードキャストレシーバー)間の非同期通信のフレームワークです。
  3. これらのコンポーネントは、同じまたは異なるアプリ(つまりプロセス)で実行できます。
  4. ポイントツーポイントとパブリッシュサブスクライブメッセージングドメインの両方を有効にします
  5. インテント自体は、実行される操作の説明と受信者に渡されるデータを含むメッセージを表します。

このスレッドから、Androidアーキテクトのダイアンハックボーンの簡単な答えは、data containerそれを実際にそうであると述べています。

Androidアーキテクチャの観点から

インテントは、プロセス間通信に使用されるデータコンテナーです。BinderAndroidアーキテクチャの観点から、上に構築されています。


0

インテントは、1つのアクティビティから別のアクティビティを開始するために使用されます。基本的には、1つのアクティビティから別のアクティビティにデータを送信したり、トリガーしたりするために使用されます。

彼らは基本的に2つのタイプです

  1. 暗黙の意図。

  2. 明示的な意図。

初心者として私はこれだけ知っています。これは、Androidインテントに関するいくつかの基本的な考えを与えると思います


2
質問への回答方法については、こちらのリンクをご覧ください。
Bonatti 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.