- Android 意图(Intent) 理论详解_蚩尤后裔-CSDN博客
- 意图:抽象描述,信息包,接口。
用户/APP提交意图给系统,由系统具象实现。
- 给系统:Android 意图处理器
实现:(合适意图的)活动
- startActivity、startActivityForResult,startActivityForResult、bindService,sendBroadcast、sendOrderedBroadcast、sendStickyBroadcast。
- Intent()+setAction(action)或Intent(action)(+getAction)。
action(动作)为Intent定义的常量,字符串形式。
常量名-常量值。如ACTION_VIEW-android.intent.action.VIEW。
- Data(数据)基于Action(方法)的参数。
可有多部分,各部分独立,可为元数据类型(如String)和/或URI。
get/set+Data/Type(UIR/元数据)
原页面有例子(播放、地图、浏览网址、电话、短信、编辑通讯录)
- Category(类别),意图的可选部分,字符串形式,add/remove+Category、getCategories。
- Flags(标记),类似Category。额外的,用于描述启动(Activity)的上下相互关系?
- Extra(附加数据),键值对形式,基于Actrion的参数,put/getExtras(key,value)。
- Android意图-Intent详解_会飞的鱼的博客-CSDN博客
- Intent属性与过滤器
action、data、category、type、component、extras为属性。
(除以上的setData())setDataAndType()。
- type。用于描述组件能够处理的请求类型(即数据的MIME类型)
setType()、setDataAndType(),String类型。(上面介绍中归属到Data)
- component。描述Intent对象中所使用的组件类名字。(节点精灵中classname 通常指 具体要跳转的activity)
setComponent()、setClass()。
可选,若空缺,则由组件管理服务依据action、data去寻找(具象化)适用的组件,相当于自动查询并调用(即,隐式意图,用于抽象通讯);否则,相当于手动调用(即,显式意图,用于透明的内部通讯)。
mComponent=setClassName - ComponentName(packageName,) / setClass - ComponentName(packageContext, class(非字符串,不适合交互))(最终都是获取component)
- ComponentName
Android四大组件(另一个是Intent)。含包名、类名(均为字符串)。
packageName(mPackage)=package.getPackageName()、className(mClass)=class.getName()。
- extras。Bundle类(键值?)
- 过滤器
清单文件中:<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
一个Activity中可以有一到多组过滤器,每组过滤器通常包括有action、category、type等属性信息。(貌似用于查找、匹配意图)
- 构造方法。多种参数列表形式,如Intetn(o/action/action,uri/packageContext,class)。
显式即明确指定intent.setClass,或传入class=SecondActivity.class。
隐式即,依据action、category、type等由系统匹配。
action节点的name是自己定义的<action android:name="xxx"/>(脱离接口常量,意味着外部无法抽象描述)
- 使用Intent在组件间传递数据,设置、获取。
putExtras(Intent src/Bundle extras/String name,XXX value)。
getIntent后getExtra。
- Android 意图(Intent)和过滤器(Filter) | 菜鸟教程
- startActivity(Intent.createChooser(intent)),如,选择打开方式。
- SearchManager貌似也是抽象的搜索,如,自动识别网址。
- 组件-活动、服务、广播。
- startActivity、startService,新建或复用(基于组件的)活动,sendBroadcast,广播给监听者。
- Android意图标准动作
- 隐式查找组件,给出的信息都是过滤器。
- setData()、setType()、setDataAndType(),getData()、getType()。
- Android意图标准类别、Android意图标准附加数据
- setComponent()、setClass()、setClassName(),getComponent()。
- URI可以为如具体控件页面(界面)的地址,如通讯录ContactsContract.Contacts.CONTENT_URI。
如自动解析Uri.parse("http://..")、Uri.parse("tel:..")。
- getIntent().getExtras().getString("keyName")。
- 安卓应用的根即activity——src/包名/MainActivity.java。
- res/layout/activity_main.xml布局文件、res/values/strings/xml、AndroidManifest.xml。
- 在 manifest 文件中使用 <intent-filter>标签用于活动、服务、广播,列出动作、类别、数据类型。
类似参数列表匹配?(但)每个元素(标签)之鞥你有一个URI和一个数据类型(元类型)。
<activity><intent-filter>..</..></..>。
一个活动(activity)可以有多个活动(action)。
- intent-filter(标签)中有<data android:scheme="http"/>描述(URI?)数据类型(模式?)。
- Android 活动(Activity) | 菜鸟教程
- 相当于窗口,具有用户界面的的单一屏幕。
- onCreate()(回调)。onStart、onResume、onPause、onStop、onRestart,onDestroy。
- 每个为应用程序所定义的活动都需要在AndroidManifest.xml中声明
(MainActivity的)意图过滤器标签中需要包含 MAIN 动作和 LAUNCHER 类别,否则应用程序的图标将不会出现在主屏幕的应用列表中。
- 零散/杂:
- AXMLPrinter2查看,scheme(清单文件?)含activity、intent-filter标签。
- Android 概述 | 菜鸟教程
API级别——API框架代号(整数)。
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?