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

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

作为一个应用开发工程师,在网上有看到过大家都说了解系统源码,例如四大组件启动流程及ipc,binder通信原理这些。而且我也有去看过,也觉得源码写的确实很精彩。但是,好像发现对实际工作上的帮助好像不太大。阅读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工程师需要掌握什么(软件开发自学步骤)

通常作为一个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 高频面试题解析

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

派优网部分新闻资讯、展示的图片素材等内容均为用户自发上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习交流。用户通过本站上传、发布任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的九游会ag的版权,请联系九游会ag一经核实,立即删除。并对发布账号进行封禁。
(0)
派大星的头像派大星

相关推荐

  • 在大家的印象里,都知道每四年一个闰年,那么1900年为什么就不是闰年了呢? 要想解决这个问题,我们就要知道闰年的知识。 1、为什么要有平年和闰年之分? 地球绕太阳旋转一周的时间叫做…

    2022年8月30日
  • 平板尺寸对照表图片平板(ipad各机型尺寸厘米对比表)

    平板电脑尺寸有哪些?平板电脑尺寸怎么算? 平板的屏幕尺寸是指移动pc屏幕对角线的尺寸,一般用英寸表示。 1寸=2.54厘米,所以: 7寸平板电脑尺寸为17.78厘米; 8寸平板电脑…

    2022年9月24日
  • 1. 有一种遇见,一眼万年;有一种人,一见倾心,再见如故。有一种遇见,仿佛是等待了千年的期盼;有一种倾心,是任何言语也无法描述的心欢。情到深处,总是无言;灵魂的相通,让两颗心长相系…

    2022年10月24日
  • 电动牙刷怎么拆卸刷头(图解换刷头详细流程)

    不仅要注重刷牙的清洁更要不注重牙刷的干净。家里的电动牙刷通常每三个月就要换一次,需要注意及时换刷头。那电动牙刷怎样换刷头?刷博士带大家一起了解下吧。 更换电动牙刷刷头前,选择合适的…

    2022年9月21日
  • 在对一只股票进行基本面分析时,利润可以说是必看的一项,因为利润是股票基本面最重要的组成部分之一。不过,利润也分为好几种,比如毛利润、净利润和扣非净利润等,这几种利润有什么区别呢?哪…

    2022年10月12日
  • 一说到广东的物种宝库,很多人就联想到白云山,而很少有人会想到车八岭。车八岭可是南岭明珠,广东乃至整个华南的物种宝库。但是由于其山高林密,人迹罕至,知道的人并不多。 车八岭到处都是原…

    2022年5月7日 资讯投稿
  • 永嘉特产美食分享,品味永嘉美食文化,探寻地道特色小吃

    永嘉是一个历史悠久的地方,这里有着丰富的美食文化。从古至今,永嘉的美食一直是人们津津乐道的话题。今天,我就来分享一下永嘉的特产美食,带大家品味永嘉美食文化,探寻地道特色小吃。 一、…

    2023年8月8日
  • 导读 霜降过后,冬天就要来了,天冷的季节,适合养的花不算多。今天来带大家认识一种适合现在养的植物,不仅栽培简单,花色美丽,而且种下去很快就会开花,在封闭的阳台内养也没问题,新手花友…

    2023年4月27日 资讯投稿
  • 随着社会的发展,社保卡的使用越来越普遍,它已经成为人们生活中必不可少的一部分。东莞农业银行社保卡激活流程是一个非常重要的环节,本文将详细介绍该流程的步骤图解。 第一步:准备材料 在…

    2023年8月12日
  • 作为一款家用电器,微波炉在我们的生活中扮演着越来越重要的角色。而格兰仕微波炉则是市面上备受欢迎的一款品牌。但是,对于很多人来说,微波炉的接线却是一个难题。正确的接线不仅可以保证微波…

    2023年5月18日
返回顶部
网站地图