ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

作为一名Android工程师,了解Framework层对工作有什么帮助吗?

2022-01-28 18:31:59  阅读:214  来源: 互联网

标签:工程师 App Framework Binder 源码 Android 卡顿


另外 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 开发的一部分,底层的实现庞大而又复杂,不用心去读源码很难将知识点
深入理解。

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

面试中那些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 Framework 高频面试题解析:

怎么学习Framework?

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

所以这里为大家整理了**Android开发相关源码精编解析**,其中关于Framework与Binder的源码解析内容:

目录

习最快的方式。**

所以这里为大家整理了**Android开发相关源码精编解析**,其中关于Framework与Binder的源码解析内容:

目录

标签:工程师,App,Framework,Binder,源码,Android,卡顿
来源: https://blog.csdn.net/m0_66264819/article/details/122735005

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有