首页 理论教育 在Android Activity中使用Intent方法优化

在Android Activity中使用Intent方法优化

时间:2023-06-10 理论教育 版权反馈
【摘要】:在Android 系统中,组件之间也可以完成通信功能,此时就需要使用Intent。Intent 一般用于启动Activity、启动服务、发送广播,承担了Android 应用程序三大核心组件相互间的通信功能。Android 中Intent 寻找目标组件的方式分为两种,一种是显式意图,另一种是隐式意图。隐式意图没有明确指定组件名的Intent 称之为隐式意图。在调用startActivity()方法时,系统会自动将这个category 添加到Intent 中。

在Android Activity中使用Intent方法优化

通信技术不发达时,人们通过信件的方式互相通信,其中邮递员起到了传递信息的作用。 在Android 系统中,组件之间也可以完成通信功能,此时就需要使用Intent。

Intent 中文翻译为“意图”,其最常见的用途是绑定应用程序组件,并在应用程序之间进行通信。 Intent 一般用于启动Activity、启动服务、发送广播,承担了Android 应用程序三大核心组件相互间的通信功能。

接下来列举Intent 启动组件的常用方法,具体如表3-1 所示。

表3-1 Intent 开启的三个组件

需要注意的是,使用Intent 开启Activity 和开启Service 只有两个方法,而开启BroadcastReceiver 有多个方法,在此只列举了三个常用方法,初学者感兴趣可以自己查阅相关API 进行学习

Android 中Intent 寻找目标组件的方式分为两种,一种是显式意图,另一种是隐式意图。 接下来分别针对这两种意图进行讲解。

(1)显式意图

其示例代码具体如下:

上述示例代码通过Intent 的构造方法来创造Intent 对象,构造方法接受两个参数,第一个参数Context 要求提供一个启动Activity 的上下文,第二个参数Class 则是指定要启动的目标Activity,通过构造方法就可以构建出Intent 对象。

除了通过指定类名开启组件外,显式意图还可以根据目标组件的包名、全路径名来指定开启组件,代码如下所示:(www.xing528.com)

在上述实例代码中,通过setClassName(包名,类名路径)函数指定要开启组件的包名和全路径名来启动另一个组件。

Activity 类中提供了一个startActivity(Intent intent)方法,该方法专门用于开启Activity,它接受一个Intent 参数,这里将构建好的Intent 传入该方法即可启动Activity。

使用这种方法开启的Activity, “意图”非常明显,因此称之为显式意图。

(2)隐式意图

没有明确指定组件名的Intent 称之为隐式意图。 Android 系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri 和数据类型)找到最合适的组件。 具体代码如下所示:

在上述代码中,<action>标签指明当前Activity 可以响应的动作为“cn.itscast.xxx”,而<category>标签则包含一些类别信息,只有当<action>和<category>中的内容同时匹配时,Activity 才会被开启。

使用隐式意图开启Activity 的示例代码如下所示:

在上述代码中,Intent 指定了setActivity(“cn. itcast. xxx”);这个动作,但是并没有指定category,这是因为清单文件中配置的“android. intent. category. DEFAULT”是一种默认的category。 在调用startActivity()方法时,系统会自动将这个category 添加到Intent 中。

在上述两种意图中,显式意图开启组件时必须要指定组件的名称,一般只在本应用进行程序切换组件时使用。 而隐式意图的功能要比显式意图更加强大,不仅可以开启本应用的组件,还可以开启其他应用的组件,例如打开系统自带的照相机、浏览器。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈