这是我参与8月更文挑战的第21天,活动详情查看:8月更文挑战
概述
Intent 是一个消息传递对象,可以用来从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:
-
启动 Activity
Activity表示应用中的一个屏幕。通过将Intent传递给startActivity(),您可以启动新的Activity实例。Intent用于描述要启动的 Activity,并携带任何必要的数据。如果您希望在 Activity 完成后收到结果,请调用
startActivityForResult()。在 Activity 的onActivityResult()回调中,您的 Activity 将结果作为单独的Intent对象接收。 -
启动Service
Service是一个不使用用户界面而在后台执行操作的组件。使用 Android 5.0(API 级别 21)及更高版本,您可以启动包含JobScheduler的服务。如需了解有关JobScheduler的详细信息,请参阅其API-reference documentation。对于 Android 5.0(API 级别 21)之前的版本,您可以使用
Service类的方法来启动服务。通过将Intent传递给startService(),您可以启动服务执行一次性操作(例如,下载文件)。Intent用于描述要启动的服务,并携带任何必要的数据。如果服务旨在使用客户端-服务器接口,则通过将
Intent传递给bindService(),您可以从其他组件绑定到此服务。
启动
Service时,需要始终使用显式 Intent,且不要为服务声明 Intent 过滤器。使用隐式 Intent 启动服务存在安全隐患,因为您无法确定哪些服务将响应 Intent,且用户无法看到哪些服务已启动。从 Android 5.0(API 级别 21)开始,如果使用隐式 Intent 调用bindService(),系统会抛出异常。
-
传递广播
广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将
Intent传递给sendBroadcast()或sendOrderedBroadcast(),您可以将广播传递给其他应用。
构建 Intent
Intent 对象携带 Android 系统用来确定要启动哪个组件的信息(例如,准确的组件名称或应当接收该 Intent 的组件类别),以及收件人组件为了正确执行操作而使用的信息(例如,要采取的操作以及要处理的数据)。
显式 Intent 示例
显式 Intent 是指用于启动某个特定应用组件(例如,应用中的某个特定 Activity 或服务)的 Intent。
例如,如果在应用中构建一个名为 DownloadService、旨在从网页下载文件的服务,则可使用以下代码启动该服务:
Intent downloadIntent = new Intent(this, DownloadService.class);
downloadIntent.setData(Uri.parse(fileUrl));
startService(downloadIntent);
复制代码
隐式 Intent 示例
隐式 Intent 指定能够在可以执行相应操作的设备上调用任何应用的操作。如果您的应用无法执行该操作而其他应用可以,且您希望用户选取要使用的应用,则使用隐式 Intent 非常有用。
例如,如果您希望用户与他人共享您的内容,请使用 ACTION_SEND 操作创建 Intent,并添加指定共享内容的 extra。使用该 Intent 调用 startActivity() 时,用户可以选取共享内容所使用的应用。
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");
// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(sendIntent);
}
复制代码

















![[02/27][官改] Simplicity@MIX2 ROM更新-一一网](https://www.proyy.com/wp-content/uploads/2020/02/3168457341.jpg)


![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)