首页 >> 知识 >> androids Framework中的Application Framework层介绍「建议收藏」

androids Framework中的Application Framework层介绍「建议收藏」

androids的四层架构相比大家都很清楚,老生常谈的说一下分别为:

Linux2.6内核层,核心库层,应用框架层,应用层。我今天重点介绍一下应用框架层Framework。

Framework层为蜜桃成人网站入口开发应用程序提供了非常多的API,蜜桃成人网站入口通过调用特殊的API构造蜜桃成人网站入口的APP,满足蜜桃成人网站入口业务上的需求。写APP的人都知道,学习androids开发的第一步就是去学习各种各样的API,什么Activity,Service,Notification等。这些都是framework提供给蜜桃成人网站入口的,那么我就详细的讲讲Framework到底在整个androids架构中扮演着什么角色。

Framework功能

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

蜜桃成人网站入口可以称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方法和操作系统的相互通信。androids为什么要用Java编写Framework层呢?直接用C或C++不是更好?有关专家给出了如下解释:

C/C++过于底层,开发者要花很多的经历对C/C++的语言研究清楚,例如C/C++的内存机制,如果稍不注意,就会忘了开启或者释放。而Java的GC会自动处理这些,省去了很多的时间让开发者专注于自己的业务。所以才会从C/C++的底层慢慢向上变成了JAVA的开发语言,该层通过JNI和核心运行库层进行交互。

其实这些也是Java能发展这么迅速的原因,面对对象语言的优势。不用太关注内存,放心大胆的去做实现,才有时间去创造新的事物。

androids Framework中的Application Framework层介绍「建议收藏」

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 )。

locations Manager

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

XMPP

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

每一层的介绍如下:

应用程序层(JAVA应用程序):

该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。

应用程序框架层(JAVA框架):

该层是androids应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在androids平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。

系统库和androids运行时层(本地框架和JAVA运行环境):

系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。

androids运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了androids的核心库,比如androids.os、androids.net、androids.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。

LINUX内核层:

androids核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。

驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。

2. androids源码目录结构:

[plain] view plain copy

androids 5.1 |– Makefile |– abi |– art |– bionic (bionic C库) |– bootable (启动引导相关代码) |– build (存放系统编译规则及generic等基础开发包配置) |– cts (androids兼容性测试套件标准) |– dalvik (dalvik JAVA虚拟机) |– developers |– development (应用程序开发相关) |– device |– docs |– external (androids使用的一些开源的模组) |– frameworks (核心框架——java及C++语言) |– hardware (部分厂家开源的硬解适配层HAL代码) |– kernel |– libcore |– libnativehelper |– ndk |– out (编译完成后的代码输出与此目录) |– packages (应用程序包) |– pdk |– prebuilts (x86和arm架构下预编译的一些资源) |– sdk (sdk及模拟器) |– system (底层文件系统库、应用及组件——C语言) |– tools `– vendor (厂商定制代码) bionic 目录 |– benchmarks |– libc (C库) | |– arch-arm (ARM架构,包含系统调用汇编实现) | |– … | |– bionic (由C实现的功能,架构无关) | |– dns | |– include (头文件) | |– kernel (Linux内核中的一些头文件) | |– private (?一些私有的头文件) | |– stdio (stdio实现) | |– tools (几个工具) | |– tzcode (时区相关代码) | |– upstream-dlmalloc | |– upstream-freebsd | |– upstream-netbsd | |– upstream-openbsd | `– zoneinfo (时区信息) |– libdl (libdl实现,dl是动态
网站地图