Android之框架20160721

Android的四层架构分别为:Linux2.6内核层,核心库层,应用框架层,应用层。

其中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个。

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

其实这些也是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

时间: 2024-11-06 00:50:59

Android之框架20160721的相关文章

Android开源框架 Android-Universal-Image-Loader

Android开源框架Universal-Image-Loader就像图片加载守护者,为我们提供了丰富的功能特性: (1)多线程加载图像(异步或同步): (2)高度可定制化imageloader配置(线程池.图片下载器.解码器.内存和磁盘缓存.显示图像选项等): (3)每一个显示图像有许多自定义选项(存根图片,缓存开关,解码选项,位图处理和显示等): (4)支持内存和磁盘上的图像缓存(设备的文件系统和SD卡): (5)监听加载过程(包括下载进度): 下来我们详解如何配置使用Universal-I

android多媒体框架学习 详解 最新版本

一:多媒体框架概述   jellybean 的多媒体跟以前的版本,通过对比没啥变化,最大的变化是google终于舍得给multimedia建个独立的git了(framework/av),等你好久了!也体现了media 在整个android系统中的重要性!framework/av下都是些C/C++代码(libmedia,libmediaplayerservice,libstagefright),jni和 java api 还是保留在原来的位置,改革还不够彻底,但还是迈出了这一步,以后维护能更好的进

android系统启动框架、Activity界面显示过程详解

一.Android系统框架 android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层.盗图如下: 具体每层的功能介绍如下: (1) 应用程序层 该层提供一些核心应用程序包,例如电子邮件.短信.日历.地图.浏览器和联系人管理等.同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等.友好共处. (2)应用程序框架层 该层是Android应

Android Xutils 框架

Android Xutils 框架 (转) 目录(?)[-] xUtils简介 目前xUtils主要有四大模块 使用xUtils快速开发框架需要有以下权限 混淆时注意事项 DbUtils使用方法 ViewUtils使用方法 HttpUtils使用方法 普通get方法 使用HttpUtils上传文件 或者 提交数据 到服务器post方法 使用HttpUtils下载文件 BitmapUtils 使用方法 其他更多示例代码见sample文件夹中的代码 输出日志 LogUtils xUtils简介 xU

Android View框架总结(八)ViewGroup事件分发机制

请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52298780 上篇分析了View的事件分发流程,留了一个问题:如果上面的EventButton继承TextView的话,按下抬起,会有一个现象,我可以告诉大家现象:就是只有dispatchTouchEvent ACTION_DOWN,onTouch ACTION_DOWN,onTouchEvent ACTION_DOWN这三个,你移动,或者抬起,是没有MOVE,或者

Android游戏框架Libgdx使用入门

转载自:http://blog.csdn.net/cping1982/article/details/6176191 Libgdx作者博客:http://www.badlogicgames.com/ Libgdx项目地址:http://code.google.com/p/libgdx/ Libgdx是一款支持2D与3D游戏开发的游戏类库,兼容大多数微机平台(标准JavaSE实现,能执行在Mac.Linux.Windows等系统)与Android平台(Android1.5以上就可以使用.Andro

AFinal-开源android应用框架简介

正文 1. 官方网站 开源中国社区AFinal项目 2. 简介 Afinal 是一个android的sqlite orm 和 ioc 框架. 同时封装了android中的http框架,使其更加简单易用:使用finalBitmap,无需考虑bitmap在android 中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题. Afinal的宗旨是简洁,快速.约定大于配置的方式.尽量一行代码完成所有事情. 什么是orm? 对象关系映射(英语:Object Relational Mapping

Android Afinal框架学习(一) FinalDb 数据库操作

框架地址:https://github.com/yangfuhai/afinal 对应源码: net.tsz.afinal.annotation.sqlite.* net.tsz.afinal.db.sqlite.* net.tsz.afinal.db.table.* net.tsz.afinal.utils.ClassUtils.net.tsz.afinal.utils.FieldUtils FinalDb 建库 FinalDb db = FinalDb.create(context, "my

Android多媒体框架对音乐播放器的支持

下面介绍一下Andriod多媒体框架对开发者提供的支持有哪些. 1. MediaScannerReceiver 这个广播接收者在接收到ACTION_BOOT_COMPLETED.ACTION_MEDIA_MOUNTED或 ACTION_MEDIA_SCANNER_SCAN_FILE 广播时对SD卡中的图片.音乐和视频文件进行了扫描,因为扫描不能影响用户使用,这里启动了一个服务MediaScannerService,扫描的文件类型如下: /* Audio */ addFileType("MP3&q