Android SDK深入解析— Application Components

Android SDK中是这样解释Application Components:

原文摘要:

A central feature of Android is that one application can make use of elements of other applications (provided those applications permit it). For example, if your application needs to display a scrolling list of images and another application has developed a suitable scroller and made it available to others, you can call upon that scroller to do the work, rather than develop your own. Your application doesn’t incorporate the code of the other application or link to it. Rather, it simply starts up that piece of the other application when the need arises.

For this to work, the system must be able to start an application process when any part of it is needed, and instantiate the Java objects for that part. Therefore, unlike applications on most other systems, Android applications don’t have a single entry point for everything in the application (no main() function, for example). Rather, they have essential components that the system can instantiate and run as needed.

简译

Android有一个核心的特征:一个应用程序可以使用其他(提供了使用许可的)应用程序的元件。例如:如果你的应用程序需要一个用于图片显示的可 滚动列表,而另外一个程序刚好包含了一个可用的列表(元件)且提供了使用许可,那么你就可以调用这个列表来为你的程序工作,不用自己开发。你的应用程序也 不需要包含其他应用程序的代码,也不用连接到这个应用程序上去。相反,当你的程序需要使用其他应用程序的时候,只要启动它的一个片段就可以了(当然,前提 是提供了使用许可)。

无论你需要调用这个应用程序的哪个部分,系统都必须启动这个应用程序进程,并实例化该部分的Java对象。因此,不同于其它多数系统上的应用程序,Android应用程序没有单入口点(例如:没有main()函数)。相反,他们的本质其实就是组件(components ),系统能够实例化并按需要运行的东西。

深入解析

看了这段话,有了这样的了解:在C、C++、Java中都有一个固定的main()函数,作为整个应用程序的入口;而在Android中,是没有这个固定的main()函数的。在某些情况下,一个程序可以调用另外一个程序中的某段代码,整个应用程序没有一个固定的入口。

看到这里时候我有些糊涂了,程序没有固定入口,那它到底依赖于什么样的运行机制呢?

实际上,这只是一个引言,它只是为了强调:

一个Android应用程序是由四种不同的组件(Activities,Services,Broadcast  receivers,Content  providers)组成的,有点类似于Windows 中的COM组件,这些组件就是SDK中提到的piece of the other application。看到这里心中的不解少了很多,这实际上就是说:开发人员可以将自己应用程序中的组件开放出去,提供给其应用程序使用,是不是与 Windows COM组件有些类似?既然与COM组件有些类似,那么是如何实现类似于创建COM组件(通过的组件的ID来创建组件)、使用组件接口提供的功能等的呢?

深入分析,我们就会发现Android提供了Intents,类似于前面说的“组件的ID”。Intents就是用来描述我们的意图是什么,将它提 交给Android系统,由Android系统按照这个意图,去寻找合适的组件,并启动这个组件来处理我们的任务!类似于COM组件,Android就相 当于是一个比较大的工厂,Intents就相当于是订单,Components就相当与是生产线。当把订单提交给工厂后,工厂就按照订单的需求并结合产品 线的功能来选择合适的生产线。各个组件之间统一通过Intents来间接相互调用的,这与COM通过统一接口创建组件的思想也是一样的。在Android 应用程序的内部,通过在AndroidManifest.xml文件中Components的<intent-filter>元素来说明 Components可以处理什么样的Intents,这与COM组件的注册似乎也不谋而合。由此可见,Android的框架与Windows COM的框架十分相似。

最后需要说明的是:这就是Android整个程序的框架。所有应用程序都是Components组成的,包括Android中Google自己开发 的程序,也就是说:你可以开发出应用程序,最终让Android上Google开发的应用程序来调用你的应用程序。这不是玩笑,在Android中很容易 实现,比如,要是你觉的Android上的虚拟键盘不好用,你可以开发个你自己喜欢的虚拟键盘,以后当Android需要使用虚拟键盘的时候,就可以调用 你的虚拟键盘。 在Android 中所有应用程序都是公平的,这也是Google“以用户为中心,其他一切水到渠成”的体现,永远把用户放在第一位。

总结说明

Android Components从整体设计来说与Windows COM 组件的设计思想是完全类似的,通过这种方法实现了:一个应用程序在需要的时候可以启动另外一个应用程序的一部分。这是否是Google想让所有的开发人员 来共同完善Android系统,而不仅仅是开发Android应用程序呢?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值