Android学习之路(9) Intent

news2025/1/13 2:50:34

Intent 是一个消息传递对象,您可以用来从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:

  • 启动 Activity

Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity(),您可以启动新的 Activity 实例。Intent 用于描述要启动的 Activity,并携带任何必要的数据。
如果您希望在 Activity 完成后收到结果,请调用 startActivityForResult()。在 Activity 的 onActivityResult() 回调中,您的 Activity 将结果作为单独的 Intent 对象接收。如需了解详细信息,请参阅 Activity 指南。

  • 启动服务

Service 是一个不使用用户界面而在后台执行操作的组件。使用 Android 5.0(API 级别 21)及更高版本,您可以启动包含 JobScheduler 的服务。如需了解有关 JobScheduler 的详细信息,请参阅其 API-reference documentation。
对于 Android 5.0(API 级别 21)之前的版本,您可以使用 Service 类的方法来启动服务。通过将 Intent 传递给 startService(),您可以启动服务执行一次性操作(例如,下载文件)。Intent 用于描述要启动的服务,并携带任何必要的数据。
如果服务旨在使用客户端-服务器接口,则通过将 Intent 传递给 bindService(),您可以从其他组件绑定到此服务。如需了解详细信息,请参阅服务指南。

  • 传递广播

广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将 Intent 传递给 sendBroadcast() 或 sendOrderedBroadcast(),您可以将广播传递给其他应用。

Intent 类型

Intent 分为两种类型:

  • 显式 Intent:通过提供目标应用的软件包名称或完全限定的组件类名来指定可处理 Intent 的应用。通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,您可能会启动您应用内的新 Activity 以响应用户操作,或者启动服务以在后台下载文件。
  • 隐式 Intent :不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理。例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。

下图显示如何在启动 Activity 时使用 Intent。当 Intent 对象显式命名某个具体的 Activity 组件时,系统立即启动该组件。

隐式 Intent 如何通过系统传递以启动其他 Activity:[1] Activity A 创建包含操作描述的 Intent,并将其传递给 startActivity()。[2] Android 系统搜索所有应用中与 Intent 匹配的 Intent 过滤器。找到匹配项之后,[3] 该系统通过调用匹配 Activity (Activity B) 的 onCreate() 方法并将其传递给 Intent,以此启动匹配 Activity。

使用隐式 Intent 时,Android 系统通过将 Intent 的内容与在设备上其他应用的清单文件中声明的 Intent 过滤器进行比较,从而找到要启动的相应组件。如果 Intent 与 Intent 过滤器匹配,则系统将启动该组件,并向其传递 Intent 对象。如果多个 Intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用。

Intent 过滤器是应用清单文件中的一个表达式,用于指定该组件要接收的 Intent 类型。例如,通过为 Activity 声明 Intent 过滤器,您可以使其他应用能够直接使用某一特定类型的 Intent 启动 Activity。同样,如果您没有为 Activity 声明任何 Intent 过滤器,则 Activity 只能通过显式 Intent 启动。

注意:为了确保应用的安全性,启动 Service 时,请始终使用显式 Intent,且不要为服务声明 Intent 过滤器。使用隐式 Intent 启动服务存在安全隐患,因为您无法确定哪些服务将响应 Intent,且用户无法看到哪些服务已启动。从 Android 5.0(API 级别 21)开始,如果使用隐式 Intent 调用 bindService(),系统会抛出异常。

Intent的七个属性

1)ComponentName(组件名称)

2)Action(动作)

3)Category(类别)

4)Data(数据),Type(MIME类型)

5)Extras(额外)

6)Flags(标记)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/915341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SQL应知应会】索引(三)• MySQL版:聚簇索引与非聚簇索引;查看索引与删除索引;索引方法

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 索引 • MySQL版 前言一、索引1.简介2.索引类型之逻…

Struts vs. Struts 2:Java Web 开发框架的升级之路与竞争力分析

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

算法 | 活用双指针完成复写零操作

Problem: 1089. 复写零 文章目录 题目解析算法原理分析找到最后一个复写的位置从后往前进行复写操作 代码展示 题目解析 首先我们来分析一下本题的题目意思 可以看到题目中给到了一个数组,意思是让我们将数组中的零元素都复写一遍,然后将其余的元素向后平…

VMware和ubuntu配置Hadoop环境

本博客主要是为了学校课程”大数据与云计算“需要安装Hadoop而写,希望这篇博客对各位阅读这篇博客的人有所帮助。废话不多说,下面直接开始配置教程。 一、获取VMware安装包 VMware获取方法有很多种,这里我准备了官网获取和从我准备的资料中获…

jstat -gcutil PID命令分析

jstat -gcutil命令打印出的数据可以用来分析Java应用程序的垃圾回收情况。 jstat -gcutil命令打印出的数据可以用来分析Java应用程序的垃圾回收情况。该命令输出的数据包括以下几个关键指标:- S0:幸存者空间0(Survivor Space 0)的…

详解I/O多路转接模型:select poll epoll

文章技术分享思路:从select模型开始,先了解select模型的理论基础,然后编写简单的基于select的tcp服务器,接着分析出select的特点和缺点。引出poll模型,了解了poll模型的基础理论,编写简单的基于poll的tcp服…

十二、执行引擎

这里写自定义目录标题 一、执行引擎概述二、Java代码的编译和执行的流程三、机器码、指令、汇编语言四、解释器五、JIT编译器 一、执行引擎概述 二、Java代码的编译和执行的流程 三、机器码、指令、汇编语言 高级语言 四、解释器 五、JIT编译器

Wlan——Wlan服务集与Wlan漫游的概念

目录 Wlan服务集的基本概念 无线漫游基本概念 无线漫游的分类 无线漫游的数据转发路径 二层本地转发漫游 三层本地转发漫游 二/三层集中转发漫游 无线漫游注意事项 Wlan服务集的基本概念 概念 全称 描述 BSS 基本服务集BSS 无线网络的基本服务单元 可以理解为1个A…

【0822作业】定义一个学生的结构体,设置私有权限,共有函数实现赋值并输出

定义一个学生的结构体,包含学生的姓名,年龄,成绩,性别,学生的成绩,姓名,定义为私有权限;定义一个学生类型的结构体变量,设置公有函数用于给学生的成绩和名字进行赋值&…

Ajax 请求到底应该放在 created 里还是 mounted 里???

示例代码 定义了一个数据 list,默认是空数组 定义了一个 API 请求,getDat 还定义了两个生命周期钩子 created 和 mounted 分析在 created 里的情况 这个时候,我们是能够成功发送 API 请求获取到数据的,控制台会打印 created&…

【Redis】——Redis基础的数据结构以及应用场景

什么是redis数据库 Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。,Redis 还支持 事务 、持久化、Lua 脚本、多种集群方案(主…

本地CPU部署运行ChatGLM2-6B模型

1、前期准备: 需要下载模型文件 2、部署过程及碰到的问题 (1)编译安装python 3.8.13 (Asianux release 7.6.18 gcc 4.8.5) 按运行的要求需要安装torch的>2.0,因此安装了torch的2.0.1,该版本的torch …

简析SCTP开发指南

目录 前言一、SCTP基本概念二、SCTP开发步骤1. **环境配置**:2. **建立Socket**:3. **绑定和监听**:4. **接收和发送数据**:5. **关闭连接**: 三、 C语言实现SCTP3.1SCTP客户端代码:3.2 SCTP服务器端代码&a…

关于伪装UserAgent知识总结

关于伪装UserAgent知识总结,可以根据自己实际应用环境去选择合适的节点,加入相应的代码即可: 1. 不缓存数据,不使用ssl 验证 from fake_useragent import UserAgentua UserAgent(verify_sslFalse,use_cache_serverFalse)2. 禁用…

C. Another Array Problem

思路:这个题没想到吧数先往0上搞,然后一直想不出来,为什么要先往0上搞呢,对于每个数来说,它最大只会变成这一堆数的最大值,所以我们考虑能不能变成最大值,那么只要是两个相等的数通过一次操作就…

智能安全帽_防抖视频定位智能安全帽头盔

智能安全帽具备出色的性能、超低功耗、广范围覆盖和简单的外围电路等优势,同时还拥有丰富的外部接口。它支持移动/联通/电信的4G5G网络,涵盖了LTE-TDD频段(B34/B38/B39/B40/B41)、LTE-FDD频段(B1/B3/B5/B8)、WCDMA频段(B1/B5/B8)、TD-SCDMA频段(B34/B39)…

【数据分析】客户分析行为分析

下面列举了几种客户行为分析模型。 1 5W2H (1)WHAT——是什么,目的是什么,做什么工作。 (2)WHY——为什么要做,可不可以不做,有没有替代方案。 (3)WHO——…

Android相机-架构

引言: 主要是针对CameraAPI v2 HAL3的架构对Android相机系统进行梳理。 相机架构 App和FrameWork packages/apps/Camer2 frameworks/ex/camera2 Camera API v2;Camera2 CameraDevice: CameraCaptureSession: CameraService AIDL…

Tan Junming 太帅,AK IOI!

tanjunming是一个非常帅气的人。他拥有一双明亮的眼睛,透露出聪明和热情的光芒。他的笑容温暖而迷人,总能让人感到快乐和舒适。他的面容线条清晰,轮廓深邃,展现出他的自信和坚定。他的皮肤光滑细腻,散发出健康和活力的…

Mybatis:xml配置和基本增删改查

目录 一、环境配置(environments) 1.事务管理器(transactionManager) 2.数据源(dataSource) 3.属性(property) 4.设置(settings) 5.类型别名&#xff0…