欢迎来到天天文库
浏览记录
ID:20062645
大小:39.50 KB
页数:3页
时间:2018-10-08
《activity跳转方式和按钮代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Activity跳转方式分析Intent简介:Android世界的四大组件Activity、BroadcastReceiver、Service、ContentProvider中,其中前三位都是通过Intent来解析进行跳转的,Intent可以说是连接这四大的重要桥梁。下面简单介绍Intent是如何解析的。1.Activity的跳转为:startActivity(Intetni);//无需返回结果startActivity(IntentI,intrequestCode);//需要返回结果2.Service的跳转为:startServi
2、ce(Intentservice);3.BroadcastReceiver的跳转为:sendBroadcastReceiver(Intentintent)//无序广播sendOrderBroadcastReceiver(Intentintent)//有序广播可以显示构造Intent来直达跳转目标,也可以隐式构造Intent继而通过一定的匹配规则来跳转到目标上,当然可能发生找到多个或0个目标上,当找到多个目标是,系统会提示用户选其一,找不到Intent时则会发生找不到类得异常。1.显示Intent:通过显示指定目标,Intent直接跳
3、转。指定方法包括:Intentintent=newIntent();Intent.setClass(context,”跳转目标”)当然还有一些类似的构造方法来显示构造Intent。然后以一定的方式来发送Intent。2.隐式Intent:通过传送一定的信息量(Android中信息量为:action、category以及data)。然后以一定的解析规则在AndroidManifest.XML文件中来匹配这些已经注册的信息量,从而进行跳转。示例:AndroidManifest.xml的一个已注册Activity隐式构造的一个Intent
4、,通过匹配规则找到目标Intent。当然,一个组件可以有多个Intent-Filter或者多个信息量,以便进行不同的操作,类似于JSP的一个页面可以根据传递来的信息进行添加或修改。隐式Intent解析过程如下:1.Android把安装的包中可获得的IntentFilter放到一个列表中。2.动作和与正在解析的Intent的种类不关联的IntentFilter会从列表中删除。2.1.动作匹配指IntentFilter包含特定的动作或没有指定的动作。一个IntentFilter有一个或多个定义的动作,如果没有任何一个能与Intent指定
5、的动作匹配的话,这个IntentFilter在算作是动作匹配检查失败。2.2.种类匹配更为严格。IntentFilter必须包含所有在解析的Intent中定义的种类。一个没有特定种类的IntentFilter只能与没有种类的Intent匹配。3.最后,Intent的数据URI中的部分会与IntentFilter中的data标签比较。如果IntentFilter定义scheme,host/authority,path或mimetype,这些值都会与Intent的URI比较。任何不匹配都会导致IntentFilter从列表中删除。没有指
6、定data值的IntentFilter会和所有的Intent数据匹配。3.1.mimetype是正在匹配的数据的数据类型。当匹配数据类型时,你可以使用通配符来匹配子类型(例如,earthquakes/*)。如果IntentFilter指定一个数据类型,它必须与Intent匹配;没有指定数据的话全部匹配。3.2.scheme是URI部分的协议——例如,http:,mailto:,tel:。3.3.host-name或“dataauthority”是介于URI中scheme和path之间的部分(例如,www.google.com)。匹配
7、主机名时,IntentFilter的scheme也必须通过匹配。3.4.数据path是紧接在“dataauthority”的后面(例如,/ig)。path只在scheme和host-name部分都匹配的情况下才匹配。4.如果这个过程中多于一个组件解析出来的话,它们会以优先度来排序,可以在IntentFilter的节点里添加一个可选的标签。最高等级的组件会返回。通过这些匹配规则,系统会依照信息量来进行匹配隐式Intent目标。而且,Intent也可以携带数据putXXX(key,value)包括Bundle数据以及简单数据的携带,然后
8、通过putXXX(key)来获得数据。Activity跳转:如上所说,可以通过显示Intent或隐式Intent来进行Activity之间的跳转,使用方法为startActivity(intent)。跳转方法有1startActivi
此文档下载收益归作者所有