Android Intent 是一种消息传递机制,用于在应用组件之间传递信息,如启动 Activity、Service 或发送广播。以下是一些常见的 Intent 类型:
显式 Intent:显式 Intent 通过指定目标组件的完整类名来明确指定要启动或与之交互的组件(如 Activity、Service)。例如:
Intent explicitIntent = new Intent(this, TargetActivity.class);
startActivity(explicitIntent);
隐式 Intent:隐式 Intent 不直接指定目标组件的类名,而是通过指定 action、category 和 data 等信息来描述期望的操作,系统会自动匹配符合条件的组件来处理该 Intent。例如:
Intent implicitIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
startActivity(implicitIntent);
广播 Intent:广播 Intent 是一种向多个组件发送消息的方式,通常用于通知应用中的其他组件发生了某种事件。例如,当设备接收到短信时,系统会发送一个广播 Intent 给所有注册的广播接收器。
启动 Activity 的 Intent:这类 Intent 用于启动特定的 Activity。除了显式 Intent 外,还可以使用隐式 Intent 来启动 Activity,只要系统能找到匹配的组件。
启动 Service 的 Intent:与启动 Activity 类似,启动 Service 的 Intent 也可以是显式的或隐式的。例如:
// 显式启动 Service
Intent serviceIntent = new Intent(this, MyService.class);
startService(serviceIntent);
// 隐式启动 Service(需要 Service 在 Manifest 中声明)
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.example.MY_SERVICE_ACTION");
startService(serviceIntent);
绑定 Service 的 Intent:当需要与 Service 进行数据交换或长时间通信时,可以使用绑定 Intent 将 Activity 与 Service 绑定在一起。例如:
Intent bindIntent = new Intent(this, MyService.class);
bindService(bindIntent, serviceConnection, Context.BIND_AUTO_CREATE);
系统广播 Intent:系统广播 Intent 是由系统发送的广播,用于通知应用发生了某些全局事件,如网络变化、电量变化等。应用可以注册广播接收器来监听这些系统广播。
自定义 Intent:除了上述标准 Intent 类型外,还可以创建自定义 Intent 来在应用内部或跨应用传递特定信息。自定义 Intent 通常包含额外的数据(如 extra 数据),以便接收方解析和处理。
了解这些常见的 Intent 类型有助于更好地利用 Android 的组件间通信机制。