• 如何把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层的了解。 例如热修复,插件化等 。

  • 相关阅读:
    密码学基础:搞懂Hash函数SHA1、SHA-2、SHA3(1)
    1.GO语言的第一步
    阿里工作7年,肝到P8就剩这份学习笔记了,已助朋友拿到10个Offer
    2023福建师范大学计算机考研信息汇总
    IntelliJ IDEA中Terminal终端下无法使用的问题
    win10 ping不通 Docker ip(解决截图)
    Django框架之python后端框架介绍
    计算机竞赛 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序
    外包干了3个多月,技术退步明显。。。。。
    干了三年外包。。。忘了什么是CICD。。。
  • 原文地址:https://blog.csdn.net/2301_76813281/article/details/132768486