- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Activity跳转方式及按钮代码
Activity跳转方式分析
Intent 简介:
Android世界的四大组件Activity、BroadcastReceiver、Service、Content Provider中,其中前三位都是通过Intent来解析进行跳转的,Intent可以说是连接这四大的重要桥梁。下面简单介绍Intent是如何解析的。
1. Activity的跳转为:
startActivity Intetn i ;//无需返回结果
startActivity Intent I, intrequestCode ; // 需要返回结果
2. Service的跳转为:startService Intent service ;
3. BroadcastReceiver的跳转为:
sendBroadcastReceiver Intent intent //无序广播
sendOrderBroadcastReceiver Intent intent //有序广播
可以显示构造Intent来直达跳转目标,也可以隐式构造Intent继而通过一定的匹配规则来跳转到目标上,当然可能发生找到多个或0个目标上,当找到多个目标是,系统会提示用户选其一,找不到Intent时则会发生找不到类得异常。
1.显示Intent:通过显示指定目标,Intent直接跳转。
指定方法包括: Intent intent new Intent ;
Intent.setClass context,”跳转目标”
当然还有一些类似的构造方法来显示构造Intent。然后以一定的方式来发送Intent。 2. 隐式Intent:通过传送一定的信息量 Android中信息量为:action、category以及data 。然后以一定的解析规则在AndroidManifest.XML文件中来匹配这些已经注册的信息量,从而进行跳转。
示例: AndroidManifest.xml的一个已注册Activity
隐式构造的一个Intent,通过匹配规则找到目标Intent。
当然,一个组件可以有多个Intent-Filter或者多个信息量,以便进行不同的操作,类似于JSP的一个页面可以根据传递来的信息进行添加或修改。
隐式Intent解析过程如下:
Android把安装的包中可获得的Intent Filter放到一个列表中。
2. 动作和与正在解析的Intent的种类不关联的Intent Filter会从列表中删除。
2.1. 动作匹配指Intent Filter包含特定的动作或没有指定的动作。一个Intent Filter有一个或多个定义的动作,如果没有任何一个能与Intent指定的动作匹配的话,这个Intent Filter在算作是动作匹配检查失败。
2.2. 种类匹配更为严格。Intent Filter必须包含所有在解析的Intent中定义的种类。一个没有特定种类的Intent Filter只能与没有种类的Intent匹配。
3. 最后,Intent的数据URI中的部分会与Intent Filter中的data标签比较。如果Intent Filter定义scheme,host/authority,path或mimetype,这些值都会与Intent的URI比较。任何不匹配都会导致Intent Filter从列表中删除。没有指定data值的Intent Filter会和所有的Intent数据匹配。
3.1. mimetype是正在匹配的数据的数据类型。当匹配数据类型时,你可以使用通配符来匹配子类型(例如,earthquakes/*)。如果Intent Filter指定一个数据类型,它必须与Intent匹配;没有指定数据的话全部匹配。
3.2. scheme是URI部分的协议——例如,http:,mailto:,tel:。
3.3. host-name或“data authority”是介于URI中scheme和path之间的部分(例如,)。匹配主机名时,Intent Filter的scheme也必须通过匹配。
3.4. 数据path是紧接在“data authority”的后面(例如,/ig)。path只在scheme和host-name部分都匹配的情况下才匹配。
4. 如果这个过程中多于一个组件解析出来的话,它们会以优先度来排序,可以在Intent Filter的节点里添加一个可选的标签。最高等级的组件会返回。
通过这些匹配规则,系统会依照信息量来进行匹配隐式Intent目标。
而且,Intent也可以携带数据putXXX key ,value 包括Bundle数据以及简单数据的携带,然后通过putXXX key 来获得数据。
Activity跳转:
如上所说,可以通过显示I
文档评论(0)