如何把Android Framework学彻底?一条龙学习

Framework通俗易懂

平时学习 Android 开发的第一步就是去学习各种各样的 API,如 Activity,Service,Notification 等。其实这些都是 Framework 提供给我们的。Framework 层为开发应用程序提供了非常多的API,我们通过调用这些 API 构造 APP,从而满足业务上的需求。因此 Framework 其实可以简单的理解为一些 API 的库房,开发人员将一些基本功能实现,通过接口提供给上层调用。

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

  • 用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。
  • 用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。

Framework框架包含了3个主要部分:服务端、客户端、Linux驱动。

Framework主要组成

服务端

AMS

Activity管理服务,主要是调度、启动、内存管理等。

WMS

窗口管理服务,主要是窗口、添加、启动、删除,以及分配窗口大小调节窗口叠放顺序,隐藏/显示等。

PMS

管理所有的package信息,包括安装、卸载、更新以及解析AndroidManifest.xml以组织相应的数据结构,这些数据结构将会被PMS、ActivityMangerService等等service和application使用到。

...等。

客服端

Activity

应用程序执行的一个单位与用户直接接触的类,应用程序可包含多个,称为四大组件之一。

ActivityThread

应用程序main入口类,处于主线程上,有且只有一个该类。是跟服务端沟通的桥梁。

PhoneWindow

它继承Window类,所以提供了通用窗口操作接口,内部拥有DecorView对象处理着窗口上的界面例如状态栏、标题栏、内容页面。

ViewRootImpl

是view和WindowManger沟通的协议,让它们建立联系。

WindowManager

顾名思义窗口管理类,客户端申请创建窗口,交于WindowManager然后通过跨进程通信向AMS申请。

...等。

驱动

Binder

负责跨进程通信

SufaceFlingger(简称SF)

负责界面刷新的

为什么要学习framework?

随着Android开发者越来越多,企业对Android程序员的筛选也有了更高的要求, 考察对Android底层逻辑的理解和思考就是很重要的一个方面,尤其是Android Framework中各个组件的原理。

很多公司的应用开发需要基于模块化、层次化、组件化、控件化来设计架构,它的基础就是建立在Android Framework框架的底层原理之上,学习Framework可以深层次的去解决安卓应用开始时遇到的一些难题,甚至不少公司都有设置专门的Android Framework开发岗位。

薪资岗位

现在不仅是Android开发,许多的车载等开发岗位都需要掌握framework技术。薪资方面也会有所提高,部分招聘技术要求也是必须要求。

Framework技术路线

1、系统资源

2、通信

3、事件机制

4、底层服务

5、UI机制

系统学习路线,framework全家桶资源摘要:《Framework全家桶笔记》+高清图获取

最后

Android系统建构分为四层由上到下依次是应用层,应用框架层,依赖库层,内核层,framework处于第二层,它为应用层的开发者提供基本功能,帮助开发快速构建应用程序。

对Android系统运行的机制,学习FrameWrok是必经之路,当前很多技术都是建立在对FrameWork层的了解。 例如热修复,插件化等 。

相关推荐
- 羊羊不超越 -12 分钟前
App渠道来源追踪方案全面分析(iOS/Android/鸿蒙)
android·ios·harmonyos
今天我又学废了14 分钟前
Scala学习记录,List
学习
王俊山IT37 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
wk灬丨1 小时前
Android Kotlin Flow 冷流 热流
android·kotlin·flow
千雅爸爸1 小时前
Android MVVM demo(使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成)
android
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
晨曦_子画1 小时前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
孤客网络科技工作室2 小时前
AJAX 全面教程:从基础到高级
android·ajax·okhttp
南宫生2 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
嚣张农民2 小时前
推荐3个实用的760°全景框架
前端·vue.js·程序员