android开发分享android工程师需要掌握什么(软件开发自学步骤)

最近有一个朋友向我问了一个这样的问题:作为一个应用开发工程师,在网上有看到过大家都说了解系统源码,例如四大组件启动流程及ipc,binder通信原理这些。而且我也有去看过,也觉得源码写的确实很精彩。但


最近有一个朋友向我问了一个这样的问题:

上述就是android开发分享android工程师需要掌握什么(软件开发自学步骤)的全部内容,如果对大家有所用处且需要了解更多关于Android学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

作为一个应用开发工程师,在网上有看到过大家都说了解系统源码,例如四大组件启动流程及ipc,binder通信原理这些。而且我也有去看过,也觉得源码写的确实很精彩。但是,好像发现对实际工作上的帮助好像不太大。阅读framework源码是在性能调优上以及自己开发框架轮子等有帮助吗还是?

今天就以这个问题给大家讲解一下framework相关知识。

framework的重要性

其实不需要别的,你去 github 上看一下 腾讯 matrix 的源码,就知道 framework 的知识有多重要了。

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

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

举个例子,如果你了解 android app 的启动机制,优化启动速度的时候会更得心应手:

定制什么样的 startingwindow;什么时候可以拿到图片的宽高;delayload 怎么做才会更合适;service 什么时候启动可以不影响启动速度;activity onresume 回调的时候真的可见了么?redex 为什么会加快应用启动速度?

再比如我们经常说的 handler,messagequeue,looper。看源码你就可以更好的理解那些概念:threadlocal 做什么的;thread 和 handler 的关系;为什么不能在子线程更新 ui?

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

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

再比如说 view 中的 hardware layer,如果你只知道“在动画开始前将 view 设置为 hardware/software layer ,做完动画再设置回去”,那么你会发现,在有些场景下,这么做会让动画变流畅,但是某些情况下动画会变得更差。如果不了解 view 的 hardware/software layer 的实现机制,盲目地给所有动画都这么设置,那么性能问题是在所难免的。

再比如说 android 的卡顿掉帧问题,很多文章都说卡顿是由于主线程耗时造成的,这其实只是一部分,其他的比如 renderthread 耗时也会导致卡顿、binder 通信耗时也会导致卡顿,60 fps 下没问题的 app 90fps 下也可能会卡顿,有时候低内存下你主线程读个文件可能都会导致卡顿。真正明白了卡顿的原理,再面对卡顿问题就不会那么慌了(choreographer,vsync,surfaceflinger,binder)。

正所谓知其然知其所以然,api 只是 android 开发的一部分,底层的实现庞大而又复杂,不用心去读源码很难将知识点深入理解。

以上只是个人的一些拙见,希望可以帮到你!

android工程师需要掌握什么(软件开发自学步骤)

面试中那些framework相关的问题

通常作为一个android app开发者,我们并不关心android的源代码实现,不过随着android开发者越来越多,企业在筛选android程序员时越来越看中一个程序员对于android底层的理解和思考,这里的底层主要就是android framewok中各个组件的运行原理,例如binder的运行机制、servicemanager的作用等等。

在android面试中,关于 framework 的问题是必备的,但是这些关于字节跳动 framework 的高频面试题你都掌握了吗?

比如字节面试官常问的framework问题知识点:

1.ams 、pms
2.activity 启动流程,app 启动流程
3.binder 机制(ipc、aidl 的使用)
4.为什么使用 parcelable,好处是什 么?
5.android 图像显示相关流程,vsync 信号等
…….android工程师需要掌握什么(软件开发自学步骤)

android framework 高频面试题解析

怎么学习framework?

阅读源码永远是学习最快的方式。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/addevelopment/996398.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐