Android知识图谱
最近打算结束一下咸鱼生活,上进一下下,也不知道能持续多久.
今天的主要任务就是把老海里的知识图谱给梳理一下,说到Android,就必然绕不开Android的一个分层架构图谱
从上往下依次是应用层,应用框架层(API),系统运行时库层,硬件抽象层(HIDL,HAL),Linux内核层,下面就从下往上挨个的介绍一下这5个层的东西.
Linux内核层
Android的核心系统服务基于Linux,在此基础上添加了Android专用的驱动.系统的安全性,内存管理,进程管理,网络协议栈和驱动模型等,都依赖于该内核
硬件抽象层(HIDL,HAL)
硬件抽象层位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化
系统运行库层
从图中可以看到,该库主要分为两个部分,C/C++程序库和Android运行时库
其中C/C++程序库包括继承自BSD的标准C函数库,支持3D绘画的OpenGL ES,支持网络浏览的webkit,支持多媒体的Media Framework,等等...,
Android运行时库主要包含核心库和ART两部分,核心库提供了Java语言核心库的大部分支持,ART与Dalvik不同,Dalvik是在专门为移动端定制的虚拟机,比JVM要高效不少,但缺点是每次都需要重新加载字节码,拖慢了启动速度,而ART则是在应用安装时,就直接解析成字节码保存起来,做到了真正的本地应用
应用框架层(API)
应用框架层就是我们通常所说的API或Framework层,这一次为开发人员提供了开发Android应用所需要用到的各种api,这一层代码使用Java编写,也可以叫做Java Framework层
应用层(System Apps)
应用层主要是由开发人员调用应用框架层的API实现的APP,系统APP和三方App都是属于同一层级,只不过系统APP所拥有的权限更高
好了,介绍完Android的分层结构之后,我们就可以知道作为一个Android开发者所处的位置了,即第5层,借助系统api开发App,知道这一点之后也就明白了开发App所需要学习的就是应用框架层的api了,那么接下来就开始整理应用框架层的系统api的图谱.
这里按照优先级从高到底整理出想要开发一个APP需要知道的知识点
四大组件(Contentprovider用的极少,同时4个组件都是可以跨进程访问的)
Activity:在Android中一个activity可以理解成一个页面,每个activity加载一个xml的布局文件,其中的生命周期,数据传递,启动模式等都是需要熟练掌握的知识
service:服务主要是为了封装一些需要在后台处理的功能或者一些耗时的操作,他的生命周期,启动模式,数据传递已经跨进程通信也是需要熟练掌握的知识点
Broadcast:广播用于接收或者发送各种通知,只要注册了对应的广播的都能收到这个广播的通知,这个比较简单易懂
布局使用
布局在Android中主要是一个个的xml文件,通常需要绑定到一个activity上才能把效果展示到屏幕上,布局需要掌握一些常见的控件以及这些控件的布局方式,常见的有线性布局控件(LinearLayout),关系布局控件(RelativeLayout),层级布局控件(FrameLayout)
多线程
这里需要知道线程进程之间的关系,进程线程的使用和特性以及Android中UI线程的特点(不能在UI线程中做耗时操作),线程的同步,锁
动画
动画分为补间动画,属性动画和帧动画,
补间动画: 即为填补中间的过程的动画,使用的是Animation的几个子类,分别是平移(TranslateAnimation),缩放(ScaleAnimation),旋转(RotateAnimation),透明度(AlphaAnimation)
帧动画:即给出一组图片,逐帧播放这些图片形成的动画
属性动画:修改view控件的属性以改变控件而达到的动画效果,主要使用ValueAnimator和ObjectAnimator实现
掌握以上内容即可做一下简单的APP了,要想更进一步的学习就需要学习更深一些的知识,这其中包括
代码调试
Android Junit, Java Junit, debug调试等
View的绘制
view的测量(measure),布局(layout)和绘制(draw)
事件分派机制
事件的层层派发,拦截,消费等
Java特性
反射,泛型,代理,类加载机制等
数据结构与算法
数据结构堆栈,队列,树,图及其相关的算法
设计模式
各种在开发的实践过程中遇到的难点以及对他们的解决而产生的提高效率的一些设计归总而来
常用的三方框架
OKHttp,Glide,EventBus,Rx系列框架等
性能优化
过度绘制,内存优化,内存溢出等
底层调用
JNI,Native等
新语言
koltion的使用与Java的转换
flutter框架
网络通信(即时通讯会用到)
socket与http协议
游戏开发--openGL,其他3D游戏引擎,各公司可能有所不同
滤镜美颜--openGL
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!