前面讲解了Android的系统架构,而在应用层,Android的App组件架构,通常就是我们所说的Android四大组件,指的是Activity,BroadCastRecivicer,ContentProvider,和Service,他们失足成一个Android App的最基本的元素。
1.3.1 Android四大组件协同工作
Android中的四大组件的使用方法与使用场景都各不相同,但它们之间也保持着紧密的联系,你中有我,我中有你,紧密相连,秘而不可分。
Activity作为人机交互的第一界面,负责向用户展示信息和处理结果,,而这些信息的来源可以通过资源获取,也可以通过ContentProvider 来获取其他应用的信息,或是Service从后台计算、下载、处理的结果,当然也可以通过 BroadCastReceiver 获取的广播信息。同时Android系统还提供了一个信使------intent,作为信息的传递的载体。组件于组件之间通过Intent来通讯、传递信息、交换数据,正是通过这样的一种形式,四大组件形成了各自独立而又紧密相连的关系,让整个Android系统“活” 了起来。
Android四大组件在开发者的协调下,共同完成这开发者赋予他们的使命,他们之间没有孰优孰略,所有的组件存在的道理就是为了让程序能够更好的实现开发者的功能。当然,熟知每个组件的功能、特点、,才能在使用时运筹帷幄。在这里,大家只需要对四大组件的协同工作模式有个基本的概念即可,随着本书的讲解,大家会慢慢掌握这些组件的使用技巧。
1.3.2 应用上下文对象
在高中的时候,语文课本上经常会出现这样的一句话--------“请联系上下文,分析这句话在文中的作用”,我们可理解为当前对象在程序中所处的一个环境,一个与系统交互的过程。
Android系统的上下文对象,即在Context中,为我们封装了这样一个“语境”。Activity、Service、Application都是继承自Context。
Android应用程序会在如下所示的几个时间点创建应用上下文Content。
创建Application
创建Activity
创建Service
不难发现,创建Context的时机就是创建Context的实现类的时候。当应用程序第一次启动时,Android系统会创建一个Application对象,同时创建application Context,所有的组件都共同拥有这样一个Context对象,这个应用上下文对象贯穿整个应用进程的生命周期,为应用全局提供了功能和环境的支持,而创建Activity和Service组件时,系统也会给他们提供运行的上下环境,及创建Activity和Service实例的Context对象。所以跟多读者在Acticity中获取Context对象是,可以使用this,而在匿名内部内中就必须指定XXXactivity.this才可以获取该Activity的Context对象。当然,你也可以通过getApplicationContext()方法来获取整个App的Context,但是通过getApplicationContext()是获得的是整个应用的上下文引用,这与某个组件的上下文引用,在某些时候还是有区别的。