初识Android framework层

Android系统的构成如下,从上到下依次是

  • Application应用层
  • Framework框架层
  • LIbrary系统库层
  • Linux内核层

关于Framework层:

Android的Framework是直接应用之下的一层,叫做应用程序框架层。这一层是核心应用程序所使用的API框架,为应用层提供各种API,提供各种组件和服务来支持我们的Android开发,包括ActivityManager,WindowManager,ViewSystem等。 

从图中可以看到

  1. ActivityManagerService(Ams):负责管理所有应用程序中的Activity,它掌握所有Activity的情况,具有所有调度Activity生命周期的能力,简单来说,ActivityManagerService是管理和掌控所有的Activity.

  2. WindowManagerService(Wms):控制窗口的显示、隐藏以及窗口的层序,简单来说,它就是管理窗口的,大多数和View有关系的都要和它打交道。

  3. 内容提供器(Content Providers):可以让一个应用访问"另一个应用"的数据(比如联系人数据库),或者共享他们的数据

  4. 视图系统(View System):丰富且可拓展,包括:列表(lists),网络(grids),文本框(text boxes),按钮(buttons)等等.

  5. 通知管理器(Notification Manager):可以在"状态栏中"显示自定义的提示信息

  6. 包管理器(Package Manger):对Android系统内的程序管理

  7. Telephony Manager主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。

  8. Resource Manager提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。

  9. Location Manager提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。

  10. XMPP可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk。

Android Framework的三大核心功能:

1、View.java:View工作原理,实现包括绘制view、处理触摸、按键事件等。

2、ActivityManagerService.java:Ams 管理所有应用程序的Activity等。

3、WindowManagerService.java:Wms 为所有应用程序分配窗口,并管理这些窗口。

Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用

         我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个。

1.用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。

2.用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和核心运行库层进行交互。 

参考资料:Android Framework层初探

                 Android Framework中的Application Framework层介绍

                 Android FrameWork 学习之Android 系统源码调试

                 Android开发如何定制framework层服务

                 Framework几个面试题

                "Android系统框架"-Androi的面试必问部分

猜你喜欢

转载自blog.csdn.net/mountain_hua/article/details/81301299