写给 Android 开发:从0到1,再从1到N,都离不开 Framework

news2024/9/22 5:29:11

作为过来人,发现很多学习者和实践者都在 Android Framework上面临着很多的困扰,比如:

  • 工作场景中遇到难题,往往只能靠盲猜和感觉,用临时性的补救措施去掩盖,看似解决了问题,但下次同样的问题又会发作,原因则是缺乏方法论、思路的指引以及工具支持;
  • 能力修炼中,缺乏互联网项目这一实践环境,对Framework只能通过理论知识进行想象,无法认识其在工作实战中的真实面目和实操过程
  • 职场晋升中,只管功能开发,不了解底层原理,缺少深入地思考与总结,无法完成复杂系统设计这类高阶工作,难以在工作中大展拳脚,而有挑战的工作往往留给有准备的人。

总之,一旦遇到问题,很少人能够由点及面逆向分析,最终找到瓶颈点和最优解决方案,而Framework是Android开发的深水区,也是衡量一个Android程序员能力高低的标准

img

Framework始终穿插在 App 整个研发生命周期中,不管是从 0 到 1 的建立阶段,还是从 1 到 N 打磨阶段,都离不开Framework。

当然如果想要精通Framework,不仅要对底层原理充分了解,还要知道如何利用Framework知识指导我们代码实践开发,除了Handler、Binder之外,还有Android App启动机制、AMS、PMS、WMS等…

如何学习Framework?

之前我在大厂从事过一段时间,里面包含了许多高质量的内部资料和文档,其中也有许多优秀的技术文章,但是当时并没有认真仔细的阅读,现在想想真是后悔莫及

前段时间也是收集整理了关于 Android Framework 底层开发技术知识点!并将之整合成了 PDF 文档;这份文档既能够夯实底层原理核心技术点,又能够掌握普通开发者,难以触及的架构设计方法论。那你在工作中、团队里、面试时,也就拥有了同行难以复制的核心竞争力

有需要完整版 PDF 文档的小伙伴:可在评论区下方留言,或者私信发送 “FW 进阶” 即可 直达获取

文档内容展示如下:

1、Handler

  • Handler 机制中,存在哪些角色?各自承担了什么功能?
  • Handler 分发事件优先级,是否可拦截?拦截的优先级如何?
  • 主线程 Looper 何时运行?
  • Handler 的 Message 可以分为那 3 类?分别有什么标识?
  • Handler 为什么需要使用底层的 epoll 来休眠?

img

2、Binder

  • Binder机制是如何跨进程的?
  • Binder的定向制导,如何找到目标Binder,唤起进程或者线程?
  • Binder一次拷贝原理?
  • Android APP进程天生支持Binder通信的原理是什么?
  • 使用 Binder 传输数据的最大限制是多少,被占满后会导致什么问题 ?

img

3、AMS

  • AMS是什么?什么时候初始化的?有什么作用?
  • AMS和zygote进程通信是如何实现的?
  • ActivityManager、ActivityManagerService、ActivityManagerNative、ActivityManagerProxy的关系
  • Instrumentation是什么?和ActivityThread是什么关系?
  • ActivityThread是什么?ApplicationThread是什么?它们的区别?

img

4、PMS

  • AndroidManifest.xml在解析的作用?
  • InstallStart如何显示安装界面?
  • sartnstal流程分析?
  • pms提前缓存内存存档?
  • 四大组件如何预加载的?

img

5、WMS

  • View的绘制流程?onMeasure职责是做什么?
  • Activity如何与window与view进行分工合作的?
  • onResume函数中度量高有效吗?
  • 线程中view.setText一定会报错吗,为什么?
  • View的绘制过程都是用的同一个canvas吗?

img

Framework 的底层知识除了这五个技术块除外,还有它的系统资源、事件机制UI机制等,这些都会有涉及到

为了帮助大家更好学习 Android Framework 框架层必备的底层逻辑,技术原理,源码解析等等相关技术知识点相关的问题,这里再额外特别提供腾讯大佬所整理的一张 Android Framework 思维导图

img

文中所有资料都是免费分享给大家的有需要这份 Android Framework 思维导图及《底层开发技术知识点文档》的朋友 ;可在评论区下方留言,或者私信发送 “FW 进阶” 即可 直达获取

资料很珍贵,希望帮到需要的人;感谢就不必要了,多多点赞关注,是我最大的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js开发、CommondJS 、ES-Module模块化设计

目录 Node.js是什么 基础使用 Node的REPL 全局变量 模块化设计 CommondJS规范 基础使用exports和module.exports require CommondJS优缺点 AMD和CMD规范 ES_Module 基本使用方法 导出 导入 结合使用 默认导出 ES Module解析流程 Node.js是什么 Node与浏览器的对比 在…

两点云求差集和交集

这里两点云的差集指从点云1中删除属于点云2的点得到的点集,并集指既属于点云1又属于点云2的点集。 两点云求差集 基于kd-tree搜索的方法较快速,当然也可以暴力搜索。思路如下: step1 在点云2建立kd-tree,设置容忍误差&#xff0…

UI控件DevExpress WinForm新手指南——如何在应用启动时执行操作

DevExpress WinForm拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任…

RESTful 接口设计

文章目录RESTful 接口设计1.获取所有员工列表2.增加一个员工3.更新员工4.删除员工5.查询单个员工RESTful 接口设计 1.获取所有员工列表 /*** 获取所有员工* 1. 请求路径--确认资源--员工--/employees* 2. 请求方法--get* 3. 请求参数--无* 4. 请求响应--多个员工--List<Em…

苹果iOS App Store上架操作流程

很多开发者在开发完iOS APP、进行内测后&#xff0c;下一步就面临上架App Store&#xff0c;不过也有很多同学对APP上架App Store的流程不太了解&#xff0c;下面我们来说一下iOS APP上架App Store的具体流程&#xff0c;如有未涉及到的部分&#xff0c;大家可以及时咨询&#…

基于微信小程序的学生购电系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mave…

服务端Skynet(二)——消息调度机制

服务端Skynet(二)——消息调度机制 文章目录服务端Skynet(二)——消息调度机制1、提前了解知识1.1、互斥锁&#xff08;mutex lock : **mut**ual **ex**clusion lock&#xff09;1.2、自旋锁&#xff08;spinlock&#xff09;1.3、读写锁&#xff08;readers–writer lock&…

最简单的git图解(多远程仓库)

上一节我们讲了git操作最基本的命令&#xff1a;最简单的git图解&#xff08;最基本命令&#xff09;_jerry_dyy的博客-CSDN博客 这一节我们来讲一下面对多个远程仓库的场景&#xff0c;应该如何来处理。 为什么要有多个远程仓库&#xff1f; 在企业内部开发团队开发过程中&a…

什么是CDN?CDN的技术原理是什么?

什么是CDN&#xff1f; CDN的全称是Content Delivery Network&#xff0c;中文名称“内容分发网络”。其主要原理是在现有网络中增加一层新的网络架构&#xff0c;将源站中的内容发布到不同的网络节点上&#xff0c;使用户可以就近获得所需的内容&#xff0c;从而提高用户访问…

【学习记录】镭神激光雷达与PC机的NTP同步

本文仅用于记录自己在实现镭神C32激光雷达和PC机进行NTP同步时的一些总结。 吐槽在先&#xff0c;镭神的文档写极其不完善&#xff0c;很多都只是提了一句&#xff0c;但并没有完整的说应该具体怎么做。前前后后折腾了三四天&#xff0c;在一知半解的官方技术支持和实验室大佬…

立创EDA仿真入门1 基本操作

立创EDA仿真入门1 基本操作一、进入EDA仿真环境二、画原理图1. 新建工程2. 绘制如下电路图三、仿真1. 运行仿真2. 导出波形图3. 查看仪表一、进入EDA仿真环境 网址&#xff1a; https://lceda.cn/ 进入EDA标准版&#xff0c;点击左上角切换到仿真模式。 二、画原理图 1. 新…

java毕业设计——基于java+Socket+sqlserver的办公自动化系统设计与实现(毕业论文+程序源码)——办公自动化系统

基于javaSocketsqlserver的办公自动化系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于javaSocketsqlserver的办公自动化系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录&#xff1a; 基于…

qemu创建linux虚拟机(亲测有效)

1&#xff0c;网桥的搭建 Bridge方式原理 Bridge方式即虚拟网桥的网络连接方式&#xff0c;是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。 桥接网络&#xff08;也叫物理设备共享&#xff09;被用作把一个物理设备复制到一台虚拟机。网桥多…

【语义分割】数据增强方法(原图与标签同时扩增)

1、数据增强作用 避免过拟合 提升模型的鲁棒性 提高模型的泛化能力 避免样本不均衡的问题 2.、数据增强分类 可分为两类&#xff1a;在线增强和离线增强。这两者的区别在于离线增强是在训练前对数据集进行处理&#xff0c;往往能得到多倍的数据集&#xff0c;在线增强是在训练…

javaEE高阶---Spring 更简单的读取和存储对象

一 : 引言 经过前面的学习&#xff0c;我们已经可以实现基本的 Spring 读取和存储对象的操作了&#xff0c;但在操作的过程中我们发现读取和存储对象并没有想象中的那么“简单”&#xff0c;所以接下来我们要学习更加简单的操作 Bean 对象的方法 . 二 : 存储Bean对象 2.1 使…

【Hack The Box】windows练习-- Reel

HTB 学习笔记 【Hack The Box】windows练习-- Reel &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f3…

视频清晰度优化指南

一、背景介绍 随着移动互联网的深入发展&#xff0c;视频消费场景逐渐变成主流&#xff0c;早期由于手机硬件的限制问题&#xff0c;导致生产出来的视频画质、清晰度存在较大的问题&#xff0c;用户体验不太好&#xff0c;当时的网络也处于4G的发展阶段&#xff0c;网络的限制…

【Hack The Box】windows练习-- support

HTB 学习笔记 【Hack The Box】windows练习-- support &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x…

策略验证_买入口诀_双管齐下买进不怕

写在前面&#xff1a; 1. 本文中提到的“股票策略校验工具”的具体使用操作请查看该博文&#xff1b; 2. 文中知识内容来自书籍《同花顺炒股软件从入门到精通》 3. 本系列文章是用来学习技法&#xff0c;文中所得内容都仅仅只是作为演示功能使用 目录 解说 策略代码 结果 解…

【正点原子FPGA连载】 第一章 MPSoC简介 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第一章 MPSoC简介…