2021一位Android中级程序员的跳槽面经,实现原理分析
作为安卓开发者,除了Bug,经常会碰到下面这些问题:
> 应用卡顿,丢帧,屏幕画面撕裂,操作界面刷新缓慢,UI不美观,布局混乱…这些问题频发的话,年后可能就不用来了。
> 开发App的时候,你是否会觉得界面卡顿?尤其是自定义View的时候。
> Android 应用的卡顿、丢帧等,这些影响用户体验的因素绝大部分都与 16ms 这个值有关。Android 设备的刷新率也是 60Hz,Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果超过了16ms,我们则认为发生了卡顿。
**一些常见的原因有:**
* layout 太过复杂,层次过多;
* UI 上有层叠太多的绘制单元,过度绘制;
* 或者onDraw等方法中过于耗时;
* CPU 或者 GPU 负载过重;
* 动画执行的次数过多;
* 频繁 GC,主要是内存抖动;
* UI 线程执行耗时操作;
* 等等;
**那么究竟要怎么做才能给用户一个良好的UI体验呢?**
1. 优化界面布局,使界面布局视图扁平化,去除不必要的背景颜色,减少透明色的使用;?(尽量减少View在系统中measure、layout、draw的累计时间)
2. 减少UI线程中数据运算,使用子线程处理耗时任务;
3. 尽量避免在循环逻辑或者onDraw方法中频繁创建新对象和使用局部变量;
4. 不要在主进程去做耗时的操作,提升UI的绘制速度(减少View的布局层级,避免过渡绘制等)
> 高级UI与自定义View有着不可分割的联系。自定义View其实并不难,为什么呢?
> 因为自定义View无非就是显示+交互:显示由onMeasure ->onLayout->onDraw的整个流程就将显示整个流程处理完了,而交互则是touch事件的处理;另外其他的一切你比如Canvas,Animation,Paint都是围绕着draw来进行的,所以我们需要搞懂其中的根本原理。
## 最后
**分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!**
* 阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升(详细[点击我的GitHub](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)领取)
![](http://www.icode9.com/i/li/?n=2&i=images/20210707/1625663885891054.jpg)
* **全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记
![](http://www.icode9.com/i/li/?n=2&i=images/20210707/1625663886354222.jpg)
## 需要架构学习笔记导图的可以[点击我的GitHub领取](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)
群内有许多技术大牛,高手如云,有任何问题,欢迎广大网友一起来交流,群内还不定期免费分享高阶Android学习视频资料和面试资料包~