意图(Intent):
1. 定义: 意图是在组件之间传递消息的对象,它可以用于启动活动、启动服务、发送广播等。
2. 分类: 意图分为显式意图和隐式意图。
- 显式意图(Explicit Intent): 直接指定要启动的组件的类名。例如,启动一个特定的活动。
Intent explicitIntent = new Intent(this, TargetActivity.class);
startActivity(explicitIntent);
- 隐式意图(Implicit Intent): 不直接指定要启动的组件,而是根据指定的动作、数据等信息,由系统帮助选择合适的组件。
Intent implicitIntent = new Intent(Intent.ACTION_VIEW);
implicitIntent.setData(Uri.parse("https://www.example.com"));
startActivity(implicitIntent);
过滤器(Intent Filter):
1. 定义: 过滤器是组件在清单文件中声明的规则,用于说明组件能够响应哪些类型的意图。
2. 示例: 在清单文件中声明一个活动的过滤器,说明它能够响应VIEW动作和http协议的数据:
<activity android:name=".TargetActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
上述过滤器表明,TargetActivity可以响应VIEW动作,并处理http协议的数据。这样,当一个隐式意图请求打开一个http链接时,系统会选择合适的组件来处理。
使用 Intent 和 Intent Filter:
1. 通过 Intent 启动组件:
// 显式意图
Intent explicitIntent = new Intent(this, TargetActivity.class);
startActivity(explicitIntent);
// 隐式意图
Intent implicitIntent = new Intent(Intent.ACTION_VIEW);
implicitIntent.setData(Uri.parse("https://www.example.com"));
startActivity(implicitIntent);
2. 在清单文件中声明过滤器:
<activity android:name=".TargetActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
通过组合使用意图和过滤器,Android应用程序能够实现灵活的组件通信和动态组件匹配,提供了一种松耦合的方式来构建应用。
转载请注明出处:http://www.pingtaimeng.com/article/detail/9397/Android