几分钟教会您使用Android基本组件

移动开发 Android
在Android应用程序中可以向Android基本组件发送表达某种请求的消息,Android根据消息的内容选择恰当的组件来响应。

Android基本组件在日常生活中的应用还是很普遍的,但是要熟练的使用Android基本组件的前提是先要了解下什么是Android基本组件?以及Android基本组件的组成部分。

Intent包含6中基本信息,分别为:目标组件名称,Action(动作),Data(数据),Category(类别),Extra(额外信息),Flag(标志)。Intent分为显示Intent和隐式Intent。显示Intent是在目标组件名称中指定目标组件的包名和类名,Intent请求会直接发送给这个组件。

由于不可能知道其他应用的类名及包名,所以显示Intent不可能用于不同应用程序,它只能在一个应用程序中传递消息。隐式Intent查找目标组件的方法是根据IntentFilter。每个Android基本组件(Activity,Service,BroadcastReceiver)都需要在AndroidManifest.xml中声明自己的IntentFilter。

[[9027]]

以描述这个组件可以接受的Intent请求。Android系统会根据Intent中的信息查找IntentFilter,看是否匹配,以确定接受Intent请求的组件。影响Android匹配的因素是Intent中的Action、Data、Category。

隐式Intent不需要目标组件的名称来激活该组件,这样可以应用于在不同应用程序之间传递消息。下面是我对于Intent机制的一种理解,不知猜的对不对。 在Android中,系统维护一个数据结构,用于描述每种Intent可以匹配的组件。可以采用Hashtable<key Intent类型(Action), value 可以匹配的组件的列表>

这样就可以把不同类型的Intent映射为可以处理该Intent的组件。在每个应用程序安装时,系统搜索AndroidManifest.xml。根据每个组件的IntentFilter信息,调用Hashtable.put(IntentFilter.Action, 组件)把每个组件注册到系统中。

Android基本组件就可以轻松的维护每个组件可以处理的Intent信息。当某个组件发出一个Intent请求时Android系统会根据Intent的信息调用Hashtable.get(Intent.Action)得到所有与之匹配的组件列表,从而找到可以响应该Intent的组件。

正是由于隐式Intent的存在,才可以实现不同应用程序可以共享彼此的功能组件这是优势。一个应用程序要启动其他应用程序的一个组件时只要传递正确的Intent即可,从这一点上看Android系统是一个组件的集合,它的运行的基本单位是组件,而不是一个应用程序。

白色版HTC G1Android平台的研发队伍阵容强大,包括摩托罗拉、Google、HTC(宏达电)、PHILIPS、T-Mobile、高通、魅族、三星、LG以及中国移动在内的34家企业,都将基于该平台开发手机的新型业务,应用之间的通用性和互联性将在最大程度上得到保持。

“开放手机联盟”表示,Android平台可以促使移动设备的创新,让用户体验到最优越的移动服务,同时,开发商也将得到一个新的开放级别,更方便的进行协同合作,从而保障新型移动设备的研发速度。

34家企业的加盟,也将大大降低新型手机设备的研发成本,完全整合的“全移动功能性产品”成为“开放手机联盟”的最终目标。这34家企业中并不包含把持Symbian的诺基亚,以及凭借着iPhone风光正在的苹果公司,美国运营商AT&T和Verizon,当然微软没有加入,独树一帜的加拿大RIM和他们的Blackberry也被挡在门外。

【编辑推荐】

  1. 新一代的Android手机介绍 深度剖析Android SDK版本介绍
  2.  
  3. 谷歌Android手机能否站稳中国
  4. PythonAndroid深度剖析Android应用程序的四种构造块
  5. 探秘与众不同的Android系统?
责任编辑:chenqingxiang 来源: 互联网
相关推荐

2010-03-01 18:13:22

Python程序

2010-02-23 14:19:30

Python目录操作

2010-01-12 18:20:31

Visual C++

2009-12-21 13:51:54

ADO.NET处理

2010-01-21 09:46:24

C++程序

2009-12-17 15:15:07

VS2008快捷键

2009-12-30 09:58:28

mpls标签

2016-09-30 15:13:01

Python代码

2013-07-02 09:58:38

ClojureClojure教程

2010-01-21 14:51:02

C++函数指针

2010-01-06 13:39:51

扩展Jquery的Js

2009-11-26 09:28:56

VS2003打包

2010-01-12 10:28:58

C++复杂性

2010-03-10 13:55:35

交换机故障

2009-12-29 09:01:46

ADSL断线

2009-12-01 20:29:42

Visual Stud

2014-03-27 15:34:55

Android组件Activity

2010-01-06 15:35:06

JSON对象

2012-01-17 13:16:34

JavaSwing

2009-11-25 13:41:53

使用VS2003
点赞
收藏

51CTO技术栈公众号