前言
如下图所示, 从顶层到底层Android的四层架构分别为:
- 应用程序层
- 应用程序框架层
- 运行层(系统Native库和Android运行时环境)
- Linux内核层
其中Framework层为我们开发应用程序提供了非常多的API,使得开发者通过简单调用API即可开始APP的开发,而不用详细了解Android系统纷繁复杂的底层知识。下面详细介绍下Framework到底在整个Android架构中的功能与构造。
Framework简介
Framework是一个中间层,一方面向上提供基本服务接口API给应用层调用,另一方面向下与C/C++程序库以及硬件抽象层等进行衔接。其可以分为三个部分:framework Java、JNI、framework C++。
- framework Java:用Java语言编写一些规范化的模块封装成框架(API),供APP层开发者调用开发出具有特殊业务的APP;
- Java Native Interface ( JN I)I:
底层代码使用C/C++书写,而应用层代码则因为面向对象、代码复用、内存释放等原因使用的是Java 语言,JNI可以使得Java与C++层进行互相访问,其根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核; - framework C++:
Framework四大组件
组件 | 功能 |
---|---|
Activities | 描述UI,并且处理用户与机器屏幕的交互 |
Services | 处理与应用程序关联的后台操作 |
Broadcast Receivers | 处理Android操作系统和应用程序之间的通信 |
Content Providers | 处理数据和数据库管理方面的问题 |
Activities
负责管理Android应用程序的用户界面。一个活动标识一个具有用户界面的单一屏幕。举个例子,一个邮件应用程序可以包含一个活动用于显示新邮件列表,另一个活动用来编写邮件,再一个活动来阅读邮件。当应用程序拥有多于一个活动,其中的一个会被标记为当应用程序启动的时候显示。
一个活动是Activity类的一个子类,如下所示:
public class MainActivity extends Activity {
}
Services
服务是运行在后台,执行长时间操作的组件。举个例子,服务可以是用户在使用不同的程序时在后台播放音乐,或者在活动中通过网络获取数据但不阻塞用户交互。
一个服务是Service类的子类,如下所示:
public class MyService extends Service {
}
Broadcast Receivers
广播接收器简单地响应从其他应用程序或者系统发来的广播消息。举个例子,应用程序可以发起广播来让其他应用程序知道一些数据已经被下载到设备,并且可以供他们使用。因此广播接收器会拦截这些通信并采取适当的行动。
广播接收器是BroadcastReceiver类的一个子类,每个消息以Intent对象的形式来广播。
public class MyReceiver extends BroadcastReceiver {
}
Content Providers
内容提供者组件通过请求从一个应用程序到另一个应用程序提供数据。这些请求由ContentResolver类的方法来处理。这些数据可以是存储在文件系统、数据库或者其他其他地方。
内容提供者是ContentProvider类的子类,并实现一套标准的API,以便其他应用程序来执行事务。
public class MyContentProvider extends ContentProvider {
}
未完待续。。。。