胡言乱语Android~博客园首页博问闪存新随笔联系订阅管理随笔-6 文章-0 评论-60 Intent和IntentFilterAndroid应用程序中有三大核心组件:Activity,Service,BroadcastReceiver都是通过被称之为意图的消息运行。Intentmessagingisafacilityforlaterun-,它保存了对要执行操作的抽象描述—对于broadcasts来说,则表示对已经发生并且正要报告的操作。对这下三种组件,发送intents分别有不同的机制。(intent)(int)去运行一个Activity(()设置结果参数,该参数将会在启动当前activity的activity中被接收---可以通过onActivityResult(intrequestCode,intresultCode,Intentdata)接收)(intent)去启动一个service或者传递一个新的指令到正在运行的service中。另外,(intent)去绑定一个Service。(在调用组件和目标Service建立一个连接)传递一个Intent对象到任何一个broadcastmethods(如:(),(),())该intent将被传递给所有已经被注册的broadcastreceiver中。在以上的三种情况下,当Intent被传递出后,Android系统会找到适合的activity,service,或者是多个broadcastreceiver去响应这个intent。,这三种情况不会存在重叠的部分,它们相互独立,互不干扰。(()后intent只会被相应的activity接收到) IntentObject一个Intent对象是一个信息包。它包含了要接收此Intent的组件需要的信息(例如需要的动作和动作需要的信息)和android系统需要的信息(要处理此Intent的组件的类别和怎样启动它)总的来说,ponentname处理Intent的组件名称。ponentNameobject---它是目标的组件的完整限定名(包名+类名)例如:“,.”.该字段是可选的。如果设置了此字段,那么IntentObject将会被传递到这个组件名所对应的类的实例中。如果没有设置,Android会用Intentobject中的其它信息去定位到一个合适的目标组件中。(称之为:Intent解析。。。这个稍后会讲到)ponent(),setClass()或者setClassName()进行设置。ponent()进行读取动作(Action)一个字符串,代表要执行的动作。--或者,对于broadcaseintents来说,表示正在发生,并且被报告的动作。Intent类中定义了许多动作常量。如下:Constent(常量)ponent(目标组件)Action(动作)ACTION_CALLactivity初始化一个电话呼叫ACTION_EDITactivity显示用户要编辑的数据ACTION_MAINactivity将该Activity作为task的第一个Activity,没有数据输入,也没有数据返回ACTION_SYNCactivity在设备上同步服务器上的数据ACTION_BATTERY_LOWbroadcastreceiver电量不足的警告ACTION_HEADSET_PLUGbroadcastreceiver耳机插入设备,或者从设备中拔出ACTION_SCREEN_ONBroadcastreceiver屏幕已经点亮ACTION_TIMEZONE_CHANGEDBroadcastreceiver时区设置改变你也可以定义自己的actionstrings来激活组件。自定义的action应该包含包名作为前缀:.".Action很大程度上决定Intent余下部分的结构。----特别是:data和extras两个字段。就像一个方法的方法名
Intent和IntentFilter经验总结 来自淘豆网www.taodocs.com转载请标明出处.