Android应用层开发学习 Framework 是必须的吗?

news2024/11/19 9:27:36

作为一名应用层 App 开发工程师,我们为什么要学习 Android Framework?答案很简单,为了不被淘汰!在 2023 年的当下,不会点 Binder WMS AMS PMS 好像都找不到工作了,更过分的是应聘企业甚至希望你会点 RN Fluter 等跨平台技术,顺便能掌握点前端技术就更好了,活生生的面试造火箭!对于市面上 99% 的 App 的开发是不需要我们掌握 Framework 的,企业去面试这些,只是为了筛人罢了,因为收到的简历确实太多了,常规的题目已经无法对应聘者做出筛选了。

对于 Android 应用开发工程师,如果想要长期的在这个行业干下去,大的方向上大概有两条相对靠谱的进阶路线可以选择:

  • 大前端路线:掌握 Android IOS 双端原生开发,跨平台开发,前端开发
  • 系统开发路线:掌握 Linux 系统开发技术,熟悉 Framework 层核心组件原理,了解 Linux 内核

大前端路线出现的很大原因是企业挣不到钱了,养不起人了,希望一个人能干几个人的活,这种岗位主打的是性价比。

不得不承认的是,移动互联网的黄金年代已经过去,大型 App 的开发机会几乎绝迹,更多的是短平快的小项目。对于这些短平快的小项目,5 年以上开发人员的优势非常小,在企业的角度甚至是减分项,为什么这么说?老开发工资高,加班接受度低,不吃老板画的饼了… 相比之下,2-3 年工作经验的新人更受欢迎,工资低,有冲劲,能加班。最致命的问题是, App 开发,无论是原生,前端,跨平台技术栈,变化非常快。老开发通常有家庭需要照顾,精力有限,学习速度很可能是赶不上新人。以上种种,导致了 35 岁问题!

35 岁问题出现最核心的原因是你积累的经验没有形成新人入行的门槛。简单地说,你的工作不吃经验!

Android 系统开发涉及的知识面很广,代码量大,复杂度高,相关的学习资料也非常匮乏。新人上手有较大的门槛,无形中就形成了岗位的护城河。

废了这么多话,归根结底一句话——Framework 是值得应用开发投入精力来学习的

以下是 Android Framework 核心基础的学习路线图:
在这里插入图片描述
这里分享一份腾讯架构师整理的 《Android Framework精编内核解析》,包含系统启动流程,Binder,Handler,WMS,AMS等等。每个板块都附有详细的相关代码和解析,这是我们学会组织代码,或者一些架构的思维的最好工具。

由于篇幅原因,本文精选几个章节,详细版点击免费领取

第一章、深入解析Binder

Binder作为Android系统提供的一种IPC机制,无论从事系统开发还是应用开发,都应该有所了解,这是 Android系统中最重要的组成,也是最难理解的一块知识点,错综复杂。要深入了解 Binder 机制,最好的方法便是阅读源码,借用Linux 鼻祖 Linus Torvalds 曾说过的一句话:Read The Fucking Source Code.

第二章、深入解析Handler消息机制

本文所分析的内容大概有以下几个模块:
● 开发人员最初设计Handler时想要解决什么问题
● Handler为我们提供了哪些功能以及如何使用
● Handler实现原理的理论分析
● Handler实现原理的源码分析
● Android Ul线程中 Handler的特殊操作

第三章、Dalvik VM进程系统

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

第四章、深入解析 WMS

WMS是系统的其他服务,无论对于应用开发还是Framework开发都是重点知识它的职责有很多,主要有以下几点:

  1. 窗口管理
    ● WMS是窗口的管理者,它负责窗口的启动、添加和删除,另外窗口的大小也和层级也是由WMS管理的。窗口管理的核心成员有:DisplayContent、WindowToken和WindowState。
  2. 窗口动画
    ● 窗口间进行切换时,使用窗口动画可以显得更炫酷一些,窗口动画由WMS的动画子系统来负责,动画子系统的管理员为:WindowAnimator
  3. 输入系统的中转站
    ● 通过窗口的接触从而产生触摸事件,InputManagerService(IMS)会对触摸事件进行处理,它会寻找一个最合适的窗口来处理触摸反馈信息,WMS是窗口的管理者,因此,WMS理所应当的成为了输入系统的中转站。
  4. Surface管理
    ● 窗口并不具备有绘制的功能,因此每个窗口都需要一块Surface来供自己绘制。为每个窗口分配Surface是由WMS来完成的

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

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

相关文章

元宇宙的重要底层技术

在元宇宙中,人们可以通过数字分身、化身(可理解为虚拟化身)、社交媒体化身和智能代理进行交互,这背后都需要底层技术支持。元宇宙的底层技术主要包括: VR/AR、5G/6G、区块链和人工智能。 VR/AR是元宇宙的主要交互设备…

JAVA新提案:努力简化Hello World写法

OpenJDK 的 JEP 445 提案正在努力简化 Java 的入门难度。这个提案主要是引入 “灵活的 Main 方法和匿名 Main 类” ,希望 Java 的学习过程能更平滑,让学生和初学者能更好地接受 Java 。 提案的作者 Ron Pressler 解释:现在的 Java 语言非常适…

ES6-迭代器和生成器

一、迭代器概念 遍历器( Iterator )就是一种机制。它是一种接口,为各种不同的数据结构提 供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作。 1) ES6 创造了一种新的遍历命令 for...of 循环&#…

虹科方案 | 助力高性能视频存储解决方案-2

上篇文章《虹科方案 | 助力高性能视频存储解决方案-1》我们分享了虹科&ATTO 和 Avid 共同创建协作解决方案,助力高性能视频存储,今天我们再深入介绍一下我们的案例详情。 一、行业挑战 从高端广播设施到小型独立工作室的媒体后期制作环境都需要允许多…

【C++】STL标准库之list

STL标准库之list list类的简介常用的list类的接口构造迭代器容量访问修改 list和vector的区别 list类的简介 list是一种序列式容器,可以在任意位置插入和删除元素,并且其时间复杂度为O(1),在底层,list是双向链表结构,…

《CTFshow-Web入门》08. Web 71~80

Web 71~80 web71知识点题解 web72知识点题解 web73题解 web74题解 web75知识点题解 web76题解 web77知识点题解 web78知识点题解 web79题解 web80知识点题解 ctf - web入门 web71 知识点 ob_get_contents():得到输出缓冲区的内容。ob_end_clean():清除…

程序员:面试造飞机,入职拧螺丝?真难···

刚开始工作的时候,我也想不通这个问题,甚至很鄙视这种现象。后面当了面试官,做到了公司中层管理,也会站在公司以及行业角度去重新思考这个问题。 为什么这种现象会越来越普遍呢?尤其在 IT 行业愈加明显。 面试看的是…

树与二叉树

我们之前讲过的链表和顺序表都是线性结构的数据结构,那么我们肯定会想有没有一种数据结构的形式不是线性结构而是其他的形式呢?今天我们就来学习一种新的数据结构——树形结构。 🌵初识树形结构 树形结构就是像我们上面的图形一样。因为像是…

Java从入门到转行

Java开发从入门到转行 Java基本介绍Java学习路线Java学习须知Java学习文档Java SEJava 对象与类Java 基本数据类型Java 变量类型Java 修饰符Java 运算符Java 循环结构Java 条件语句Java switch caseJava 数组Java 日期与时间Java 正则表达式Java 方法Java 流(Stream)、 File、 …

A Restful API

SpringBoot 定义Restful API 定义POJOOrderBuyer 定义RestfulControllerGet API for queryPost API for addPut API for updateDelete API for delete 定义AjaxResponse Patavariable RequestParm RequestBodyRequestHeader 定义POJO Order import java.util.Date; import ja…

工厂方法模式

// 简单工厂模式 #include <iostream> #include <string>// 抽象产品类 class Product { public:virtual ~Product() {}virtual std::string getName() 0; };// 具体产品类A class ProductA : public Product { public:std::string getName() {return "Produ…

Swiper总结

文章目录 Swiper总结概述使用简单使用自动切换分页器样式切换效果预览视差效果延迟加载自适应高度放大缩小 案例tab切换引导页 Swiper总结 概述 Swiper是纯javascript打造的滑动特效插件&#xff0c;面向手机、平板电脑等移动终端。 Swiper能实现触屏焦点图、触屏Tab切换、触…

第三节课 Linux文件权限

Linux是多人多任务的操作系统&#xff0c;因此可能常常会有多人使用一台机器&#xff0c; 为了考虑每个人的隐私、方便用户合作&#xff0c;每个文件都有三类用户&#xff0c;权限是基于这三类用户设定的&#xff1a; 1) 文件拥有者&#xff08;user&#xff09; 2) 组用户&a…

SpringBoot 自定义注解实现Redis缓存功能

背景 最近小A的公司要做一个大屏可视化平台&#xff0c;主要是给领导看的&#xff0c;领导说这个项目要给领导演示&#xff0c;效果好不好直接关系到能不能拿下这个项目&#xff0c;领导还补了一句“这项目至少是百万级的&#xff0c;大伙要全力以赴”&#xff0c;早上小A还想…

走近大数据——什么是大数据、计算架构的发展

文章目录 一、什么是大数据二、大数据计算架构的发展1.RDBMS阶段2.Hadoop Map-Reduce阶段3.Spark阶段4.Flink阶段 参考 一、什么是大数据 大数据是指无法在有限时间内用常规软件工具对其进行获取、存储、管理和处理的数据集合。 大数据的特点&#xff1a; 海量化&#xff1a;数…

少年不懂孔乙己,读懂已是书中人

文章目录 前言梗从何来互联网文学背后的焦虑给学弟学妹的建议 前言 《孔乙己》是近代文学巨匠鲁迅所著的短篇小说。 大概故事讲的是孔乙己是站着喝酒而穿长衫的&#xff08;那时候穿长衫的人代表着有知识&#xff09;唯一人&#xff0c;穿的虽然是长衫&#xff0c;可是又脏又破…

SpringMVC概述

SpringMVC概述 1. SpringMVC概述1.1 SpringMVC概述 2. 入门案例【重点】2.1 实现步骤2.2 代码实现【第一步】创建web工程&#xff08;Maven结构&#xff09;【第二步】设置tomcat服务器&#xff0c;加载web工程【第三步】导入坐标&#xff08;SpringMVCServlet&#xff09;【第…

璞华助力“数字人社”,为成都市人社数字化建设提供多方位的产品与技术支持!

新的时期&#xff0c;人力资源和社会保障事业进入新一轮的制度创新和加快发展阶段。把对各项人力资源和社会保障业务的支持和服务纳入信息化建设&#xff0c;通过 “数字人社”信息化建设项目&#xff0c;是充分利用新一代信息技术&#xff0c;有效整合各类信息资源&#xff0c…

ChatGPT背后的打工人:你不干,有的是AI干

AI“出圈” 如今&#xff0c;数字技术发展速度惊人&#xff0c;AI提高了社会生产效率&#xff0c;更真切地冲击到原有的生产秩序。 年初AI技术的爆发&#xff0c;让国内看到了进一步降本增效的希望。 国内多家互联网企业相继推出类ChatGPT产品&#xff0c;复旦大学邱锡鹏教授…

清洁赛道新势力,米博凭“减法”突围?

在五四青年节这个特殊的日子&#xff0c;方太旗下的高端智能清洁品牌“米博”发布了新一代无滚布洗地机7系列。 5月4日晚&#xff0c;米博以“减法生活&#xff0c;净请7代”为主题&#xff0c;举办了新品发布会。在发布会上&#xff0c;从小红书翻红的董洁作为方太集团米博产…