Android应用程序是由组件组成的,组件可以调用相互独立的功能模块。根据完成的功能,组件可划分为四类核心组件,即Activity、Service、BroadcastReceiver和ContentProvider。
1 Activity组件
Activity是Android最重要的组件,负责用户界面的设计。Activity用户界面框架采用MVC 模式(Model View Controller) 。控制器负责接受并响应程序的外部动作;通过视图反馈应用程序给用户的信息(UI 界面反馈);模型是应用程序的核心,用于保存数据和代码。
2 Service组件
Service是Android提供的无用户界面、长时间在后台运行的组件。Android 提供了许多系统服务程序。
3 BroadcastReceiver组件
在Android系统中,当有特定事件发生时就会产生相应的广播。例如,开机启动完成、收到短信、电池电量改变、网络状态改变等。
为了通知手机用户有事件发生,在通常情况下,通知管理器(NotificationManager)会在手机的状态栏里产生一个具有提示音的通知,用户通过下滑手势可以查看相关信息。
BroadcastReceiver(广播接收者)接收来自系统或其他应用程序的广播,并做出回应。
4 ContentProvider组件
为了跨进程共享数据, Android提供了ContentProvider接口,可以在无须了解数据源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作。
5 Application、Context和Intent
a.应用对象Application
当Android程序启动时系统会创建一个Application类型的对象,用来存储系统的一些信息完成数据传递、共享和缓存等操作。
Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期,且是全局、单例的,即在不同的Activity和Service中获得的对象都是同一个对象。
b.上下文对象Context
Activity和Service都是Context的子类,通过Context提供的方法getApplicationContext()就能获得Context对象。
BroadcastReceiver、ContentProvider并不是Context的子类,其所持有的Context都是由其他组件传递过来的。
Android组件及通信机制,如图所示。
c.意图对象Intent
Android提供轻量级的进程间通信机制Intent,使跨进程组件通信和发送系统广播成为可能,组件Activity、Service和BroadcastReceiver都是通过消息机制被启动(激活)的,其使用的消息就封装在对象Intent里。
6 Android应用程序的运行入口
在一个Android应用程序开始运行的时候,会单独启动一个进程(Process)。默认的情况下,这个应用程序中的所有组件(Activity、Service、BroadcastReceiver和ContentProvider)都会运行在这个进程里。
一个Android应用程序通常由多个Activity组成,但只有一个主Activity。在项目清单文件中使用< activity >
标签注册主Activity时,还需要内嵌 < intent-filter >
、 < action> 和 < category >
标签,以此说明该Activity为Android应用程序的入口。定义一个MainActivity.java为应用的主
Activity代码如下: