Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1470420
  • 博文数量: 218
  • 博客积分: 6394
  • 博客等级: 准将
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-08 15:33
个人简介

持之以恒

文章分类

全部博文(218)

文章存档

2013年(8)

2012年(2)

2011年(21)

2010年(55)

2009年(116)

2008年(16)

分类: Android平台

2011-02-24 23:55:52

Intent是一次即将操作的抽象的描述。
Intent里面对某个操作的抽象的描述主要是包含以下几个部分
对执行动作的描述:操作(Action)
对动作相关的数据进行描述:数据(Data)
对数据类型进行描述:数据类型(Type)
对执行动作的附加的信息进行描述:类别(category)
操作的一切的附加信息的描述:附件信息(extras)
对目标组件进行描述(component),直接Intent。

当一个Intent发生时(操作),系统通过解析Intent并查找相应的组件(Activity、Service、Broadcast Receiver)对应的Intent-filter来进行匹配处理该Intent的组件。

在应用中我们可以使用两种类型的Intent
(1)直接Intent:指定了component属性的Intent。通过制定具体的组件类,通知应用启动对应的组件。
(2)间接Intent:通过解析,将Intent映射给可以处理此Intent的Activity、Receiver或者Service。Intent解析机制通过查找已经注册在AndroidManifest.xml中的所有的Intent-filter,最终找到相应的处理组件。具体通过Intent的action、type、category三个属性来进行判断。

在Android中Intent的作用主要有三个,分别是:
(1) 启动一个新的Activity并且可以携带数据。
(2) 通过broadcast Intent机制可以将一个Intent发送给任何一个对这个Intent感兴趣的Broadcast Receiver。
(3) 通过startService(Intent)或者bindService(Intent,ServiceConnection,int)和后台的Service进行交互。

首先介绍Intent的第一个作用:启动一个新的Activity并且可以携带数据

关于Activity的启动的两种的模式

第一种模式是使用startActivity(Intent);这个Intent或者指明了一个特定的Activity或者是里面包含选定的Activity的信息,但是具体的启动哪一个Activity是由系统决定的,Android系统负责挑选一个最满足匹配挑选条件的Activity。使用这种模式,当新的Activity运行结束的时候,不必执行原来的Activity里的回调函数,也不必有返回值。

第二种模式使用函数startActivityForResult,当新的Activity运行结束的时候,必须执行原来的Activity里的回调函数,这个函数叫做onActivityResult。
具体的参数如下:
startActivityForResult(intent,REQUEST_CODE),这个方法有两个参数,第一个参数是Intent类型,第二个参数表示请求码。如果请求码大于0,当新的Activity结束时,这个请求码返回到onActivityResult的参数里面。
onActivityResult(REQUEST_CODE,RESULT_CODE,Intent data)有三个参数:REQUEST_CODE表示的是startActivityForResult方法传递的参数二;RESULT_CODE表示的是新的Activity的返回值,表示这个Activity上的操作是否合法;Intent data主要表示新Activity向old Activity传输的数据。

Activity之间传输的数据的类型是Boundle类型,它的实现其实是对HashMap的一层封装。数据的传递采用的是putExtra(Boundle)和getExtra("Key")方法。

关于主界面的启动的问题:通过在AndroidManifest.xml中制定intent-filter中的相应的intent的属性来标示该activity是主activity。

其次介绍Intent的第二个应用:通过broadcast Intent机制可以将一个Intent发送给任何一个对这个Intent感兴趣的Broadcast Receiver。

发送方:在SendBroadcast(intent)的时候,指定该Intent的相应的属性。

接收方:通过定义Receiver对应的Intent-filter来确定截获何种Intent,并且调用虚函数onReceive进行处理。

最后介绍Intent的第三个应用:通过startService(Intent)或者bindService(Intent,ServiceConnection,int)和后台的Service进行交互。

Service启动方:在startService(intent)的时候,指定该Intent的相应的属性。

Service:通过定义Service对应的Intent-filter来确定截获何种Intent,并且调用相应的虚函数(onStart、onDestroy等)进行处理。

 
阅读(2241) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~