Android Studio移动应用开发——Intent过滤器的原理与匹配机制、如何获取Activity返回值

Intent过滤器的原理与匹配机制
1.原理

Intent过滤器能够根据Intent中的动作(Action)、类别(Categorie)和数据(Data)等内容,匹配和筛选适合接收该Intent的组件。可以注册Intent过滤器的组件有:Activity、Service、BroadcastReceiver

组件注册Intent过滤器的方法: 在AndroidManifest.xml文件的各个组件下定义<intent-filter>节点,然后在节点中声明该组件所支持的动作(<action>标签)、类别(<category>标签)和数据格式(<data>标签)等信息。
在这里插入图片描述

2.匹配机制

每启动一个activity时,需要将Intent与Intent过滤器进行匹配。

Android系统会将所有Intent过滤器的 “动作action”“类别category”“数据data” 与当前Intent进行匹配,任何不匹配的Intent过滤器都将被过滤掉。如果Intent过滤器的匹配结果多于一个,则可以根据在<intent-filter>标签中定义的优先级标签来对Intent过滤器进行排序,优先级最高的Intent过滤器将被选择。

没有指定“动作”的Intent过滤器可以匹配任何的Intent,但是没有指定“类别”的Intent过滤器只能匹配没有“类别”的Intent。

如何获取Activity返回值

在这里插入图片描述

  • 父activity通过startActivityForResult(Intent, requestCode)启动子activity,当子activity把数据传回父activity时,需要把数据通过intent.putExtra()函数放入intent中,并通过setResult(resultCode,intent)把数据返回父activity。
  • 当子Activity关闭后,父Activity会调用onActivityResult(requestCode, resultCode, Intent)获取子Activity的返回值。由于所有子Activity返回时,父Activity都调用相同的处理函数,所以通过requestCode来判断是哪一个子Activity的返回值
//Intent用于决定启动哪个Activity
//requestCode用来标识请求的来源
startActivityForResult(Intent, requestCode)

//requestCode判断是哪一个子Activity的返回值
//resultCode表示子Activity的数据返回状态
//Intent是子Activity的返回数据
onActivityResult(requestCode, resultCode, Intent)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值