39

Androidでの明示的なアクティビティ呼び出しと暗黙的なアクティビティ呼び出しの違いは何ですか? 簡単な例で答えを説明すると良いでしょう。

4

7 に答える 7

64

例えば:

暗黙のアクティビティ呼び出し

インテント フィルターでは、アクティビティのアクションを作成するため、他のアプリは次のようにこのアクションを介してアクティビティを呼び出すことができます。

<activity android:name=".BrowserActivitiy" android:label="@string/app_name">
   <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <data android:scheme="http"/> 
   </intent-filter>
</activity>

暗黙のインテントを呼び出すもう 1 つの方法は次のとおりです。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
startActivity(intent);

明示的なアクティビティ コール

次のアクティビティ クラスを正確に示す呼び出しを行います。

Intent intent = new Intent(this, ActivityABC.class);
intent.putExtra("Value", "This value for ActivityABC");
startActivity(intent);

これが、Android での明示的および暗黙的なアクティビティ呼び出しについて理解を深めるのに役立つことを願っています。

Android Intent の詳細については、こちらをご覧ください

于 2012-04-23T02:25:47.930 に答える
31
  1. 明示的インテントは、特定のコンポーネントを呼び出すために使用されます。起動するコンポーネントがわかっているが、使用するコンポーネントをユーザーが自由に制御できないようにする場合。たとえば、2 つのアクティビティを持つアプリケーションがあるとします。アクティビティ A とアクティビティ B。アクティビティ A からアクティビティ B を起動したいと考えています。この場合、アクティビティ B をターゲットとする明示的なインテントを定義し、それを使用して直接呼び出します。
  2. 暗黙的インテントは、何をしたいのかはわかっているが、どのコンポーネントを起動すればよいかわからない場合に使用されます。または、使用するコンポーネントのリストから選択するオプションをユーザーに提供したい場合。これらのインテントが Android システムに送信されると、特定のアクションとデータ型に登録されているすべてのコンポーネントが検索されます。コンポーネントが 1 つしか見つからない場合、Android はコンポーネントを直接起動します。たとえば、カメラを使用して写真を撮るアプリケーションがあるとします。アプリケーションの機能の 1 つは、ユーザーが撮影した写真を送信できるようにすることです。ユーザーが写真を送信できるアプリケーションの種類がわからず、ユーザーが複数の外部アプリケーションを使用している場合に、どの外部アプリケーションを使用するかを選択するオプションをユーザーに提供したいと考えています。この場合、明示的なインテントは使用しません。

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

于 2013-12-22T10:53:44.860 に答える
2

ここで意図の解決を参照してください

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

明示的インテント (アクティビティ) は特定のクラスを参照し、通常はパッケージでのみ使用できます。暗黙的インテントとは、アプリが特定の種類のデータを処理できること、または電子メールの送信などの特定のサービスを提供できることを公に発表するインテント フィルターを指します。暗黙的インテントでは、インテントを処理するために使用するアクティビティ (通常はパッケージ) をユーザーが選択するか、既定のハンドラーが設定されている場合はそれが起動されます。

于 2012-04-22T22:41:24.853 に答える
1

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

  • 明示的な意図:

    Intentで直接ターゲット コンポーネント名を明示的に指定して渡すとIntent オブジェクトが作成されますが、これは明示的なインテントです。

  • 暗黙の意図:

    この場合、インテント データと目的のアクション (メールの送信、写真のキャプチャ、場所のピン留めなど) に基づいて、登録されたコンポーネント (通常、登録は後で説明するインテント フィルターを使用して行われます) を評価するタスクを Android に委任します。地図などで)私たちが通過します。そのため、Android は同じアプリまたはインテント メッセージ/ジョブを処理できる他のアプリからコンポーネントを自動的に起動します。この場合のアイデアは、地図上に場所を固定する必要があるとしましょう。そのために、それを処理するために独自のアクティビティをコーディングする必要はありません。代わりに、アプリに代わってジョブを実行できる Google マップなどのアプリに位置データを渡すだけです。

ソース: http://codetheory.in/android-intents/

于 2015-12-30T07:56:47.057 に答える