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

最近,一个朋友问我这个问题:作为一个应用开发工程师,我在网上看到大家都说知道系统的源代码,比如四大组件的启动过程,IPC和Binder的通信原理。而且我也看过,觉得源代码真的很精彩。但在实际工作中似乎帮助不大。在性能调优和自行开发框架轮方面,阅读框架的源代码有帮助吗...

最近,一个朋友问我这个问题:

作为一个应用开发工程师,我在网上看到大家都说知道系统的源代码,比如四大组件的启动过程,IPC和Binder的通信原理。而且我也看过,觉得源代码真的很精彩。但在实际工作中似乎帮助不大。在性能调优和自行开发框架轮方面,阅读框架的源代码有帮助吗,或者?

今天我就用这个问题来讲解框架的相关知识。

框架的重要性

其实你不需要别的。去Github看看腾讯矩阵的源代码,你就知道框架的知识有多重要了。

比如丢帧监控,函数插装,慢速函数检测,ANR监控,启动监控,我们都需要对Framework有深入的了解,才能知道怎么监控,用什么机制来监控,函数插装在哪里,反射调用哪个类,方法,属性…

另外,框架作为Android框架层,提供了很多API供App调用,但是很多机制都是框架打包的,供App使用。如果不知道这些机制的原理,就很难在此基础上进行优化。

比如,如果你知道Android App的启动机制,那么优化启动速度会更容易:

什么样的启动窗口;要定制;什么时候可以得到图片的宽度和高度;怎么做DelayLoad会比较合适;服务启动时不会影响启动速度;当Resume上的活动被回调时,它真的可见吗?为什么Redex会加快应用启动速度?

比如我们常说的Handler,MessageQueue,Looper。看一下源代码,可以更好的理解那些概念:ThreadLocal是做什么的;线程和处理程序的关系;为什么我不能在子线程中更新UI?

比如Android的进程管理机制。按照一定的规则,AMS Android进程设置了不同的优先级。内存低的时候,高优先级的应用比低优先级的应用更不容易被系统杀死!那么AMS是根据什么规则来设置优先级的呢?知道这些规则能提高App的存活率吗?这可以通过仔细阅读AMS代码来了解。

比如活动启动模式,你可能熟练使用各种模式,但是如果你学习了框架中活动和流程的管理,你就知道活动栈和任务的管理。那么你会对这种启动模式有更深层次的运用。

另一个例子是视图中的硬件层。如果你只知道“在动画开始前将视图设置为硬件/软件层,动画结束后再设置回来”,那么你会发现,在某些场景下,这样做会让动画更流畅,但在某些情况下,动画会变得更差。如果你不知道View的硬件/软件层的实现机制,盲目的把所有动画都设置成这样,那么性能问题是不可避免的。

再比如安卓的卡顿掉帧问题。很多文章都说卡顿是主线程耗时造成的,但这只是一部分。其他的,比如RenderThread的耗时,也会造成卡顿,Binder的通信耗时也会如此。在60 fps时没有问题的应用程序也可能在90fps时卡住,有时在内存不足的情况下通过主线程读取文件可能都会导致卡住。如果你真的理解了卡顿的原理,当你再次面对卡顿问题(编舞、VSync、Su***ceFlinger、Binder)的时候就不会慌张了。

我们知道为什么,API只是Android开发的一部分,底层的实现是庞大而复杂的。不仔细阅读源代码,很难深入理解知识点。

以上只是我的拙见。希望能帮到你!

面试那些与框架相关的问题

通常,作为一个Android应用开发者,我们并不关心Android的源代码实现。但是随着Android开发者越来越多,企业越来越感兴趣的是一个程序员对Android底层的理解和思考,这里的底层主要是Android Framewok中各个组件的运行原理,比如Binder的运行机制,ServiceManager的功能等等。

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

比如字节面试官常见的框架题知识点:

1.AMS 、PMS
2.Activity 启动流程,App 启动流程
3.Binder 机制(IPC、AIDL 的使用)
4.为什么使用 Parcelable,好处是什 么?
5.Android 图像显示相关流程,Vsync 信号等
…….

1.AMS,PMS
2。活动启动流程,App启动流程
3。活页夹机制(使用IPC和AIDL)
4。为什么使用Parcelable,有什么好处?
5。Android图像显示过程,Vsync信号等。
……。

Android框架高频面试问题分析

如何学习框架?

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

本文来自吃鸡只用平底锅投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/485891.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 04-02
下一篇 04-02

相关推荐

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信