引言
Android的四层架构相比大家都很清楚,老生常谈的说一下分别为:Linux2.6
内核层,核心库层,应用框架层,应用层。我今天重点介绍一下应用框架层Framework
,其实也是我自己的学习心得。
Framework层为我们开发应用程序提供了非常多的API
,我们通过调用特殊的API构造我们的APP,满足我们业务上的需求。写APP的人都知道,学习Android开发的第一步就是去学习各种各样的API,什么Activity,Service,Notification
等。这些都是framework
提供给我们的,那么我就详细的讲讲Framework
到底在整个Android
架构中扮演着什么角色。
Framework功能
Framework
其实可以简单的理解为一些API的库房,android
开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用
我们可以称Framework
层才真正是Java
语言实现的层,在这层里定义的API
都是用Java语言编写。但是又因为它包含了JNI
的方法,JNI
用C/C++
编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux
内核。那么Framework
层的作用就有2个。
-
用Java语言编写一些规范化的模块封装成框架,供
APP
层开发者调用开发出具有特殊业务的手机应用。 -
用
Java Native Interface
调用core lib
层的本地方法,JNI
的库是在Dalvik
虚拟机启动时加载进去的,Dalvik
会直接去寻址这个JNI
方法,然后去调用。
2种方式的结合达到了Java方法和操作系统的相互通信。Android为什么要用Java
编写Framework
层呢?直接用C或C++
不是更好?有关专家给出了如下解释:
C/C++
过于底层,开发者要花很多的经历对C/C++
的语言研究清楚,例如C/C++
的内存机制,如果稍不注意,就会忘了开启或者释放。而Java
的GC
会自动处理这些,省去了很多的时间让开发者专注于自己的业务。所以才会从C/C++
的底层慢慢向上变成了JAVA
的开发语言,该层通过JNI
和核心运行库层进行交互。
其实这些也是Java能发展这么迅速的原因,面对对象语言的优势。不用太关注内存,放心大胆的去做实现,才有时间去创造新的事物。
Framework API
Activity Manager
用来管理应用程序生命周期并提供常用的导航回退功能。
Window Manager
提供一些我们访问手机屏幕的方法。屏幕的透明度、亮度、背景。
Content Providers
使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
View System
可以用来构建应用程序, 它包括列表(Lists
),网格(Grids
),文本框(Text boxes
),按钮(Buttons
), 甚至可嵌入的web浏览器。
Notification Manager
使得应用程序可以在状态栏中显示自定义的提示信息。
Package Manager
提供对系统的安装包的访问。包括安装、卸载应用,查询permission
相关信息,查询Application相关信息等。
Telephony Manager
主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。
Resource Manager
提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files
)。
Location Manager
提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。
XMPP
可扩展通讯和表示协议。前身为Jabber
,提供即时通信服务。例如推送功能,Google Talk。
。。。
Framework
层提供的服务还有很多,就不一一列出啦。
总结
从Android
的整体框架开始,我们只详细介绍了一下Framework
层,对其作用和功能,以及在4层框架中所扮演的角色做了简单的阐述。然后列举出来它提供给上层的一些重要的服务。对Application Framework
有了一个简单的印象性了解,以此为开始,以后再对每个服务详细研究。Thanks