欢迎来到天天文库
浏览记录
ID:35294529
大小:41.73 KB
页数:11页
时间:2019-03-23
《intent和intentfilter经验总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、胡言乱语Android~·博客园·首页·博问·闪存·新随笔·联系·订阅·管理随笔-6 文章-0 评论-60 Intent和IntentFilterAndroid应用程序中有三大核心组件:Activity,Service,BroadcastReceiver都是通过被称之为意图的消息运行。Intentmessagingisafacilityforlaterun-timebindingbetweencomponentsinthesameordifferentapplications.意图本身一个Intent对象,它保存了对要执行操作的抽象描述—对于broadcasts来说,则表示对已经发生并且正要
2、报告的操作。对这下三种组件,发送intents分别有不同的机制。·传递一个Intent对象到Context.startActivity(intent)或者Activity.startActivityForResult(int)去运行一个Activity(可以在通过此方式启动后的Activity中调用Activity.setResult()设置结果参数,该参数将会在启动当前activity的activity中被接收---可以通过onActivityResult(intrequestCode,intresultCode,Intentdata)接收)·传递一个Intent对象到Context.st
3、artService(intent)去启动一个service或者传递一个新的指令到正在运行的service中。另外,还可以通过Context.bindService(intent)去绑定一个Service。(在调用组件和目标Service建立一个连接)·传递一个Intent对象到任何一个broadcastmethods(如:Context.sendBroadcast(),Context.sendOrderedBroadcast(),Context.sendStickyBroadcast())该intent将被传递给所有已经被注册的broadcastreceiver中。在以上的三种情况下,当I
4、ntent被传递出后,Android系统会找到适合的activity,service,或者是多个broadcastreceiver去响应这个intent。,这三种情况不会存在重叠的部分,它们相互独立,互不干扰。(调用Context.startActivity()后intent只会被相应的activity接收到) IntentObject一个Intent对象是一个信息包。它包含了要接收此Intent的组件需要的信息(例如需要的动作和动作需要的信息)和android系统需要的信息(要处理此Intent的组件的类别和怎样启动它)总的来说,IntentObject主要包括以下信息:Component
5、name处理Intent的组件名称。此字段是一个ComponentNameobject---它是目标的组件的完整限定名(包名+类名)例如:“com.android,.test.TestActivity”.该字段是可选的。如果设置了此字段,那么IntentObject将会被传递到这个组件名所对应的类的实例中。如果没有设置,Android会用Intentobject中的其它信息去定位到一个合适的目标组件中。(称之为:Intent解析。。。这个稍后会讲到)设置Componentname可以通过setComponent(),setClass()或者setClassName()进行设置。可以通过get
6、Component()进行读取动作(Action)一个字符串,代表要执行的动作。--或者,对于broadcaseintents来说,表示正在发生,并且被报告的动作。Intent类中定义了许多动作常量。如下:Constent(常量)TargetComponent(目标组件)Action(动作)ACTION_CALLactivity初始化一个电话呼叫ACTION_EDITactivity显示用户要编辑的数据ACTION_MAINactivity将该Activity作为task的第一个Activity,没有数据输入,也没有数据返回ACTION_SYNCactivity在设备上同步服务器上的数据AC
7、TION_BATTERY_LOWbroadcastreceiver电量不足的警告ACTION_HEADSET_PLUGbroadcastreceiver耳机插入设备,或者从设备中拔出ACTION_SCREEN_ONBroadcastreceiver屏幕已经点亮ACTION_TIMEZONE_CHANGEDBroadcastreceiver时区设置改变你也可以定义自己的actionstrings来激活组件。自定
此文档下载收益归作者所有