app UI卡顿原因是在运行时出现了丢帧,以及UI线程被阻塞。
首先来一下丢帧现象,android每16ms会对界面进行一次渲染,如果app的绘制、计算等超过了16ms那么只能等下一个16ms才能进行渲染,这就发生了丢帧现象。
手机卡顿出现的原因:
1,布局过于复杂:xml布局文件可能存在深层嵌套或者组件过多;(优化布局,使用ConstraintLayout)
2,重复绘制:一个界面的某一点可能在同一时间进行了多次绘制;(检查重复绘制,通过开发者选项可以查看)
3,内存抖动:系统内存是有限的,系统经常会将不活跃的进程置入外存中就是常说的虚拟内存,当调用它时再把它从外存转入内存,内存外存转换频率过大就会导致内存抖动;
4,性能瓶颈: 任务过多且执行调度不够好,手机性能落后;
5,历史原因,老代码以及设计问题导致重复代码,和布局没有更好的复用和优化;
6,团队人众多员 ,存在过多的代码合并和插入问题;
7,写的代码太乱,没有合理的封装,使用过多的静态
卡顿优化解决方案:
1,减低布局的复杂度;
2,单线程任务不要太多;
3,适当调度;
4,将一些计算分担给服务器端。