首页 > 其他分享 >大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他

时间:2023-06-19 11:02:13浏览次数:37  
标签:知乎 启动 App Framework Binder Handler Android


大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_Android

为什么要学Android Framework?

想要成为一名优秀的Android开发,就需要有一个完备的知识体系,Android Framework 的知识是很重要的一个组成部分,他广泛的应用在各个领域。

像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解。只有这样才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……

另外 Framework 作为 Android 框架层,为 App 提供了众多 API 去调用 ,但是很多机制都是 Framework 包装好了给 App 来用的,如果不知道这些机制的原理,那么很难去在这基础上做优化。

举几个栗子

如果你了解 Android App 的启动机制,优化启动速度的时候会更得心应手:定制什么样的 StartingWindow;什么时候可以拿到图片的宽高;DelayLoad 怎么做才会更合适;Service 什么时候启动可以不影响启动速度;Activity onResume 回调的时候真的可见了么?Redex 为什么会加快应用启动速度?ContentProvider 会不会影响启动速度?为什么会影响?

再比如我们经常说的 Handler,MessageQueue,Looper。看源码你就可以更好的理解那些概念:ThreadLocal 做什么的;Thread 和 Handler 的关系;为什么不能在子线程更新 UI?idleHandler 什么时候运行? 主线程为什么循环却不会卡死?ContentProvider、Broadcast、Service 是怎么利用 Message 监控 ANR 的?

再比如说 Android 的进程管理机制。AMS 把 Android 进程按照一定的规则,设置不同的优先级,在内存比较低的时候,高优先级的 App 比低优先级的 App 更不容易被系统干掉!那么 AMS 是按照什么规则来设置优先级的呢?了解这些规则是不是可以提高 App 的存活率呢?这都是可以通过熟读 AMS 代码知道的。

再比如说 Activity 启动的模式,可能你会熟练使用各种模式,但是如果你学习 Framework 中 Activity 和进程的管理,知道 Activity 栈和 Task 的管理。那么你会对这启动模式的使用更加深刻。

如何学习Android Framework?

关于如何学习Android Framework开发知识,最近小编有幸在字节跳动总监手里扒到这份Android framework高级开发笔记,部分知识章节发布到了在知乎上已经收获了1000+的点赞量,今天在这里拿出来分享给大家。

本笔记讲解了Framework的主要模块,从环境的部署到技术的应用,再到项目实战,让我们不仅是学习框架技术的使用,而且可以学习到使用架构如何解决实际的问题,由浅入深,详细解析Framework,让你简单高效学完这块知识!

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_Android_02

第一章:深入解析Binder

Binder机制作为进程间通信的一种手段,基本上贯穿了andorid框架层的全部。所以首先必须要搞懂的Android Binder的基本通信机制。

本章知识点

  • Binder 系列—开篇
  • Binder Driver 初探
  • Binder 驱动概述
  • Binder 核心方法
    ……

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_源码分析_03

  • Binder Driver 再探
  • Binder 通信简述
  • Binder 通信协议
  • 场景总结
  • Binder 内存机制

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_源码分析_04

  • Binder 启动 ServiceManager
  • 启动过程
  • 核心工作

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_App_05

  • 获取 ServiceManager
  • 获取 ProcessState 对象
  • 获取 BpBinder 对象
  • 获取 BpServiceManager

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_android_06

  • 注册服务(addService)
  • ProcessState
  • 服务注册
  • Binder Driver
  • ServiceManager

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_Android_07

  • 获取服务(getService)
  • Framework 层分析
  • Binder 架构
  • Binder 类图
  • Binder 类分层
  • 初始化
  • 注册服务
  • 获取服务

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_App_08

  • 如何使用 Binder
  • 如何使用 AIDL
  • Binder 总结
  • Binder 面试题全解析

第二章:深入解析Handler

相信大家都有这样的感受:网上分析 Handler 机制原理的文章那么多, 为啥还要画蛇添足整理这份笔记呢?不是说前人们写的文章不好,我就是觉得他们写的不细, 有些点不讲清楚,逻辑很难通顺的,每次我学个什么东西时遇到这种情况都贼难受。

本章先宏观理论分析与 Message 源码分析,再到MessageQueue 的源码分析,Looper 的源码分析,handler 的源码分析,Handler 机制实现原理总结。最后还整理Handler 所有面试题大全解析。

Handler这章内容很长,但思路是循序渐进的,如果你能坚持读完我相信肯定不会让你失望。

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_App_09

第三章:Dalvik VM 进程系统

Andorid系统启动、init 进程、Zygote、SystemServer启动流程、 应用程序的创建使用,Activity的创建、销毁 Handler和Looper。

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_Android_10

第四章 深入解析 WMS

窗口管理框架 系统动画框架 View的工作原理。

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_Android_11

第五章 PackagerManagerService

包管理服务。资源管理相关类

大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他_Android_12

标签:知乎,启动,App,Framework,Binder,Handler,Android
From: https://blog.51cto.com/u_16163452/6511717

相关文章

  • 又一开源项目爆火于GitHub,Android高级插件化强化实战
    一、插件化起源插件化技术最初源于免安装运行Apk的想法,这个免安装的Apk就可以理解为插件,而支持插件的app我们一般叫宿主。想必大家都知道,在Android系统中,应用是以Apk的形式存在的,应用都需要安装才能使用。但实际上Android系统安装应用的方式相当简单,其实就是把应用Apk......
  • 我快被Framework源码烦死了
    前言这段时间,忙到没时间学新东西,都有点心有余而力不足,想着抽空补补课,于是重读了Framework源码。因为Framework源码太重要了,像掉帧监控、函数插装、慢函数检测、ANR监控、启动监控等,都需要对Framework有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反......
  • Kotlin版本的WanAndroid项目实战(三):Kotlin的集合
    集合概述学习方法:扫描一遍下述表格中集合相关的有哪些操作,具体使用时再可以详细去查构造集合Kotlin里面添加了可变集合的概念,目前只是一种接口级别的限制,底层实现还是可变的集合,不是线程安全的,还是可以通过Java代码修改内部元素迭代器(1)Iterable接口的继承者(包括Set与......
  • 从入门到精通,Android Jetpack 架构实战教程合集
    Jetpack是Google推出的一些库的集合,包含组件、工具、架构方案等,其优势众多:可以减少空指针异常崩溃、内存泄漏,为开发出健壮且流畅的程序提供强力保障;可以消除大量重复样板式的代码,加速Android的开发进程;可以统一开发模式,抛弃传统的MVC,MVP…对于谷歌而言,AndroidJetpack是他......
  • 阿里P7架构师整理:最新Android 开发源码精编内核解析
    做Android开发多年,我们都深知阅读源码的重要性,阅读源码可以帮助我们:①在通用型基础技术中提高技术能力,凸显出自己的技术实力;②在重点领域打造自己的亮点,参与技术栈的运维,积累丰富的使用经验,成为团队的核心骨干;③从优秀的源码中学习设计模式的应用,和有用的编码技巧。但是平时读源码......
  • Android性能优化知识脑图总结+学习手册文档,超干分享!
    近几年,Android开发技术不断发展,岗位要求不断升高,导致程序员的面试也进一步向更深、更广处延伸,比如原先很少涉及的性能优化,现已成为大厂的高频面试题。熟悉性能优化相关内容,就相当于拿到大厂的敲门砖,更是工作中最能突显价值的金字招牌。但众所周知,想要学习和掌握性能优化,就必须有实......
  • Android组件开发简介
    一、背景一个app随着业务增加,代码放在同一个模块中会越来越臃肿,同时也导致多人开发的一个难度。组件化可以把业务单独分出来,形成一个单独模块,可单独运行、测试等,相互之间不会影响。另外一个优势,如果一个公司有多个app,总会出现一些相同业务,如登录/注册。我们可以单独把公共业务封装......
  • Android 换肤之资源(Resources)加载源码分析(一)
    本系列计划3篇:Android换肤之资源(Resources)加载(一)—本篇setContentView()/LayoutInflater源码分析(二)换肤框架搭建(三)看完本篇你可以学会什么?Resources在什么时候被解析并加载的Application#ResourcesActivity#Resourcesdrawable如何加载出来的创建自己的Resources加......
  • 【Android】一文读懂 Activity 的生命周期
    作为Android开发人,如果说连Activity生命周期都没搞懂,会走非常多的弯路,所以这篇文章我就对Activity生命周期的生命周期进行一个简单的总结。单Activity生命周期的整体流程首先,我们创建一个My_A_Activity,并且打印它的各个生命周期方法。classMy_A_Activity:AppCompatActivity(){......
  • Android代码检查规则Lint的自定义与应用
    前言:在日常的代码开发中,此处相信每个开发人员对代码质量都是高要求,有自己的一套代码规范,但是我们不是单独作战,往往大家都是团队作战,人是最大的变量,各人各异,如何保证团队的代码质量和代码规范呢?靠开发者自觉吗?也许有的团队有严格的CR机制,在MR阶段会进行CR,CR不通过的MR是不允许合入的......