卡顿、丢帧、布局混乱,怎么办?

作为安卓工程师,经常会碰到下面这些问题:

开发的app应用卡顿,丢帧,屏幕画面撕裂,UI不美观,布局混乱;开发的时候,操作界面刷新缓慢,会很卡顿,尤其是自定义View的时候…

Android 应用的卡顿、丢帧等,这些影响用户体验的因素绝大部分都与16ms这个值有关。Android 设备的刷新率也是 60Hz,Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果超过了16ms,我们则认为发生了卡顿。

一些常见的原因有:

  • layout 太过复杂,层次过多;

  • UI 上有层叠太多的绘制单元,过度绘制;

  • 或者onDraw等方法中过于耗时;

  • CPU 或者 GPU 负载过重;

  • 动画执行的次数过多;

  • 频繁 GC,主要是内存抖动;

  • UI 线程执行耗时操作;

  • 等等;

高级UI与自定义View有着不可分割的联系。自定义View其实并不难,为什么呢?因为自定义View无非就是显示+交互:显示由onMeasure ->onLayout->onDraw的整个流程就将显示整个流程处理完了,而交互则是touch事件的处理;另外其他的一切比如Canvas,Animation,Paint都是围绕着draw来进行的,所以我们需要搞懂其中的根本原理。

优秀高级UI展示

自定义View,是Android程序员的分水岭。

那究竟要怎么做才能给用户一个良好的UI体验呢?

  • 优化界面布局,使界面布局视图扁平化,去除不必要的背景颜色,减少透明色的使用;(尽量减少View在系统中measure、layout、draw的累计时间)

  • 减少UI线程中数据运算,使用子线程处理耗时任务;

  • 尽量避免在循环逻辑或者onDraw方法中频繁创建新对象和使用局部变量;

  • 不要在主进程去做耗时的操作,提升UI的绘制速度(减少View的布局层级,避免过渡绘制等)

据官方统计,超过一半的开发者没有写过自定义ViewGroup;接近六成的人不知道MeasureSpec;80% 的开发者不会手写懒加载机制优化UI性能…

不钻研各种技能,怎么提升能力涨薪资?

为了提升大家自定义View原理的理解,我特邀了前三星/小米技术总监Alvin老师为大家带来《高级UI与自定义View》系列直播课程。

  • 从自定义谈起,带大家一行一行代码的去实现一个京东自定义ViewGroup;

  • 基于自定义ViewGroup的思想带大家一起去研究系统的FrameLayout与ViewPager的源码;

  • 通过阅读源码发现ViewPager设计过程中的几个问题,解决因为不当使用它们带来的显示问题和性能问题;

原价199元,限时优惠0.1元


Alvin老师:

前三星/小米技术总监,华南理工大学软件工程硕士,国内首批Android底层技术导航人;

专精领域:精通Android FrameWork源码及性能优化;三星手机Rom核心架构设计,专注NDK底层设计与开发。

课程大纲

7.21 手把手实战自定义京东流式布局ViewGroup

ViewGroup中measure的原理;

ViewGroup中Layout的一般套路;

MeasureSpec是什么?有什么用?

手写京东流式布局ViewGroup实战;

7.22 ViewPager为例的ViewGroup源码解析

LayoutInflater 解析XML文件的原理;

ViewPager绘制的基本流程;

基于ViewPager自定义自动滑动Banner;

如何通过阅读源码解决疑难UI bug?

7.23 ViewPager嵌套Fragment UI架构性能优化

ViewPager +Fragment 如何管理生命周期;

ViewPager 嵌套Fragment的缓存机制;

ViewPager 卡顿性能优化;

▲附赠一份379页的Android架构进阶、视频资料

(包含腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中高级安卓技术点。希望可以助你面试更加顺利!)

添加月亮小姐姐即可领取

如扫码受限,可搜索微信号:xxkt-moon

推荐阅读:

我的新书,《第一行代码 第3版》已出版!

重学Kotlin中那些你没注意到的细节

看完这篇JVM内存管理机制,面试再也不慌了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值