第2章已经讲述了编写健壮的Java代码所需的基础知识,本章将侧重于介绍Android平台开发中的主要概念。
Android平台和传统编程模型的对比
传统编程中,操作系统启动应用时使用单一入口点,通常是main函数,在这个函数中可能会首先解析用户在命令行中提供的输入参数,然后获取输入数据,在处理之后生成输出数据。操作系统负责把程序的代码加载到进程中,然后开始执行它。从概念上讲,这个过程看起来如图3-1所示。
图3-1:在进程中运行的简单应用
使用Java编写程序,这个过程会变得稍微复杂一些:Java虚拟机(VM)负责将二进制代码加载到内存中来实例化Java类。这个过程如图3-2所示。如果使用的是富图形化用户界面系统,如Swing,则可能会启动一个UI系统,在UI系统中通常需要编写回调函数来响应各种操作事件。
图3-2:一个运行在Java虚拟机上的一个进程中的Java应用
相比而言,Android则更进一步,它支持多个应用入口点,引入了更丰富的机制。在Android系统中假定的前提是,系统会在不同的地方启动它们,这取决于用户当前正在哪里以及用户接下来想做的是什么。
除了位置上的分层,程序近似于一组组件之间的协作,它可能在应用的正常流之外启动。例如,一个对条形码进行扫描的组件提供了这个独立的功能,很多应用可以把它组合到自己的UI流中。用户不需要亲自动手启动每个应用,组件本身就能够调用某个程序与用户交互。