基于隐式意图的安卓路由实现

本文介绍了如何利用安卓隐式意图(Intent)实现页面间的跳转。通过自定义Action、添加默认Category和设计Data,创建了一个路由系统。工具类采用Builder模式接收跳转参数,实现灵活的调用方式,达到模块解耦和统一管理的目的。
摘要由CSDN通过智能技术生成

安卓隐式意图(Intent)

本文实现安卓页面间(Activity)的跳转是根据安卓隐式意图来实现的。
在任玉刚的《Android开发艺术探索》一书中,对Android中的Intent跳转以及IntentFilter的匹配规则作了非常详细的说明,这里简单介绍一下。
首先了解下IntentFilter的匹配规则:

Action

Action至少需要设置一个。目的IntentFilter中至少存在一个和自身的Action一致

Category

Category可以不设置。如果设置了,则目的IntentFilter中必须包含所有已设置的Category。需要说明的是:在Activity跳转过程中,系统会给Intent默认添加名称为:"android.intent.category.DEFAULT"的Category。所以如果一个Activity允许隐式访问的话,则必须添加"android.intent.category.DEFAULT"的Category

Data

Data由两部分构成:mimeType以及URI。mimeType指媒体类型,比如:image/png、audio/mpeg4-generic 、video/*等,可以表示图片、音频、视频等不同的媒体格式。而URI则可以对比一个url地址解释。需要至少有一个完全匹配(支持通配符)。需要说明的几点是:

  1. mimeType 有默认值:contentfile
  2. IntentFiltersetDatasetType 方法会清除彼此内容,同时设置时需要调用setDataAndType

路由的设计

自定义Action

定义全局的Action作为跳转的IntentFilterAction
比如:

<action android:name="com.github.lotty.action.NAVIGATION" />
添加默认的Category

通过上文对Category的分析,如果一个Activity允许被隐式意图访问,则必须添加默认值:
"android.intent.category.DEFAULT",所以所有的Activity的I

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值