Android系统框架-Androi的面试必问部分
“Android系统框架”-Androi的面试必问部分
安卓系统框架层的详解:
首先我们先看看框架结构图:
通过图片可知,从上到下分为了四层:”应用程序”层->”应用程序框架”层->”系统运行库”层->”linux核心”层
各层次的作用介绍:
1.”应用程序”层:
可以理解成"直接和用户接触"的层:
就是已经做好的程序,你们用的QQ,微信就是了,还有系统自带的比如:电话,短信,联系人,日历,计算器等等就是这层
2.”应用程序框架”层
可以理解成"开发人员"开发QQ,微信等所在的层:
使用的API框架,大大简化和方便开发人员的开发
1.视图系统(View System):
丰富且可拓展,包括:列表(lists),网络(grids),文本框(text boxes),按钮(buttons)等等.
2.内容提供器(Content Providers):
可以让一个应用访问"另一个应用"的数据(比如联系人数据库),或者共享他们的数据
3.通知管理器(Notification Manager):
可以在"状态栏中"显示自定义的提示信息
4.活动管理器(Activity Manager):
管理和应用生命周期并提供常用的"导航退回"功能
5.窗口管理器(Window Manager):
管理所有的窗口程序
6.包管理器(Package Manger):
对Android系统内的程序管理
在安卓 SDK中内置了一些对象,最重要的就是Activity,Intent,Service,ContentProvider,BroadCastReciver
Activity活动
一个活动就是一个界面,一个应用可以定义多个活动,每个活动都能保存和恢复自身的状态.
Intent意图
贯穿各个组件的工具,也是描述特定活动的机制,如:选照片,打电话等具体动作;
安卓中所有动作都是通过Intent完成,所以开发者可以替代或者重用大量组件.如发送邮件的intent,我们的应用想发送邮件那么激活这个intent即可.或者我们自己写一个邮件的应用,注册为活动后就处理intent代替远原有的标准的邮件程序.
Service服务
服务就是在后台运行的,看不到界面的任务,比如音乐播放器,你关闭界面后仍然播放,这就是服务机制
ContentProvider内容提供者
程序提供自定义对数据进行增删改查的方案,是不同程序共享数据的最佳方式,如谷歌提供的联系人的内容提供者和:姓名,地址,电话等在内的可悲所有程序使用
3.系统运行库层
我们开发使用应用程序框架层的时候,android系统会通过C/C++库来方便对我们对各个组件的使用,便于开发
Bionic系统 C 库:
C语言标准库,**系统最底层"库"**,C库通过Linux系统调用
多媒体库(MediaFrameword):
android系统多媒体库,基于PacketVideo openCORE,该库支持多种常用的音频,视频格式的回放和录制以及图片 如:MPG4,MP3,AAC,AMR,JPG,PNG等
SGL:
2D图形引擎
SSL:
位于TVP/IP协议和各种应用层协议之间,为数据提供支持
OpenGL ES:
3D图形引擎
SQLite:
关系数据库引擎
Webkit:
浏览器引擎
FreeType:
位图(Bitmap)即矢量(Vector)
Java虚拟机(JVM)和Dalvik虚拟机(DVM)对比
很多人认为Dalvik虚拟机就是Java虚拟机,这个说法是不正确的,因为:
1.Dalvik**不是按照JVM的规范来实现,两者不兼容**
2.JVM运行的是.class字节码文件,DVM运行的是.dex文件(Dalvik Executable)
3.安卓也是JAVA语言,那么java文件变成.class后,通过dex工具把.class变成.dex文件,然后DVM就可以运行这个文件了.
Dalvik虚拟机非常合适于移动端使用,对比做系统和服务器系统运行的虚拟机,不需要很快的CPU和大内存空间.
DVM虚拟机特征:
1.专有的dex文件格式
.dex是安卓专用文件格式,那为什么会启用.class的直接运行而采用新格式?
- 1.一个应用很多个类,编译后有很多的.class文件,class文件中有不少冗余信息,dex文件格式会把所有的.class文件整合到一个文件,从而减少了文件尺寸和I/O操作,也提高了类的查找速度.
- 2.增加操作码的支持
- 3.文件结构尽量简洁,使用等长指令,提高解析速度.
- 4.尽量扩大只读结构大小,借以跨进程的数据共享
2.dex的优化
- .dex文件的结构紧凑,仍需优化,比如验证dex文件中的所有类,对特定类进行优化,对方法里的操作码的优化.
3.基于寄存器
- 对比基于堆栈的java虚拟机,dvm基于寄存器,虽然在硬件,通用性上更差点,但在代码执行效率上效率更高
- 一个应用,对应一个寄存器,放置在一个单独的存储空间
3.linux核心驱动层
linux核心层作为安卓硬件和软件的抽象层
安卓的核心服务是基于linux内核的,比如安全性,内存管理,进程管理,网络协议和驱动模型等都依赖于linux内核
安卓主要是需要与硬件打交道的驱动程序
- 显示驱动(Display Driver)
- 键盘驱动(keyBoard Driver)
- flash内存驱动(Flash Memory Driver)
- 音频驱动(Audio Driver)
- 照相机驱动(Camera Driver)
- 蓝牙驱动(Blutooth Driver)
- WIFI驱动
Binder驱动
IPC驱动,特殊的驱动,用于进程间通信
能源管理
Power Manager:如电池电量
Android系统框架-Androi的面试必问部分相关推荐
- 网易资深安卓架构师:2021年Android常见面试题,面试必问
开头 让我们一起来看看,字节跳动的第三面,面试官都问了什么?(第一二面的题目及答案已整理,需要的可以在文末领取) 从七月中旬开始,我前前后后差不多一共投递了八十份简历,到目前为止,我参加面试的面试有十 ...
- Android面试必问框架原理
Android面试必问框架原理 volatile的实现原理 synchronized的实现原理 join方法实现原理 CAS无锁编程的原理 ReentrantLock的实现原理 AQS的大致实现思路 ...
- 【Android面试】Android中高级开发面试必问,7年外包一飞冲天
Andorid 开发在前两年也非常火热,但随着客户端开发招聘回归理性,行业已经越来越成熟,岗位招聘也就自然而然地变"卷"了.这一点,身为程序员老鸟的我深有体会. 年初,我就开始投递 ...
- Android面试必问之触摸事件传递机制
Android面试必问之触摸事件传递机制 一.Activity的构成 二.触摸事件的类型 三.事件传递的三个阶段 Activity对点击事件的分发过程 五.View的事件分发机制 六.点击事件分发的传 ...
- 音视频开发-音视频面试必问的直播延迟分析丨FFmpeg|SRS流媒体服务器|webrtc|Android NDK开发|HTTP-FLV|RTSP
音视频面试必问的直播延迟分析 1.直播延迟500ms是极限吗,加上WebRTC能做到多少 2.推流的延迟分析 3.流媒体服务器延迟分析 4.拉流的延迟分析 视频讲解如下,点击观看: 音视频开发-音视频 ...
- Android技术篇!BAT等大厂必问技术面试题,吊打面试官系列!
背景 首先我是个菜鸡,工资也低的一笔. 刚毕业时候在一家国企上班干 app 开发,干了快两年的时候,跳槽到了一家伪大厂干安全.投了不少简历都没有回音,只有这加伪大厂要我就来了.当时说好了会接触一些底层 ...
- linux驱动工程面试必问知识点
linux内核原理面试必问(由易到难) 简单型 1:linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些? 2:linux中内存划分及如何使用?虚拟地址及物理地址的概念及彼此之间的转化, ...
- 面试必问的 Linux 命令帮你整理好啦 (下)
如果我说 Linux 操作系统和命令是面试必问的,你相信么?不信,我们来看看企业招聘需求: 随便在某招聘网站上搜了一下测试工程师的技能要求,基本都有 Linux 操作系统和命令的要求.说明,这个技能确 ...
- 计算机网络八股文-面试必问
搬运–面试必问计算机网络 原博客链接:https://www.nowcoder.com 每次面试问网络都还可以,整理了点资料,应付普通的问题没什么问题了. 除了字节的网络太为难人,其他公司都说回答的很 ...
最新文章
- 自动驾驶技术分级标准微调,全球竞争格局一夜剧变
- P2924 [USACO08DEC]大栅栏Largest Fence
- python是不是特别垃圾-Python 这语言真是混乱和原始
- 3D人脸识别预处理,3D face recognition preprocess
- 线程的run()方法带参情况
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- Redmi Note 10系列细节曝光:有望4G/5G双版本齐发
- java通过jri 数据分析_SparkR安装部署及数据分析实例
- c#利用SWIG调用c++dll学习总结【转】
- 华为认证hcia含金量_华为hcna认证含金量高吗 华为hcna认证用处大吗
- 【MATLAB信号处理】信号波形的产生及系统时域分析
- php excel多级下拉菜单自动生成,Excel下拉菜单怎么做 多级联动+自动匹配教程
- 华为荣耀Linux笔记本评测,华为荣耀 篇一:荣耀MagicBook Pro详细评测 当下最值得推荐的高性能全面屏笔记本...
- python获取本机IP地址
- 团队博客-应用功能说明书
- 串口公头母头: RS232 DB9 公头 母头 串口引脚定义
- 【Java】线程池、Lambda表达式
- 百度地图定位经纬度返回4.9E-324有关问题
- 【微信小程序】退款功能教程(含申请退款和退款回调)
- 华为云OBS文件上传下载工具类
热门文章
- 这篇不讨好任何人的回忆录,记录了我从双非学校到BAT/TMD六offer的原因
- 图片处理算法工程师面试及笔试
- windows功能_【各种功能升级】微信windows版v2.9新体验
- a豆:在讲一个珍重每一个人的故事
- 运维派 企业面试题45 创建10个 用户 ; ping探测主机是否在线
- 计算机显示无法打开打印机添加,windows无法打开添加打印机怎么办 无法打开添加打印机解决方法...
- 空气质量(air quality) 简称:AQI 计算AQI等笔记
- html2canvas教程_HTML5 Canvas教程:简介
- 女生学python工作累吗_数据分析师女生做累么 工资一般多少
- k8s节点NotReady状态