开发中哪些习惯会影响卡顿的发生,如下:
1.布局太乱,层级太深。
1.1:通过减少冗余或者嵌套布局来降低视图层次结构。比如使用约束布局代替线性布局和相对布局。
1.2:用 ViewStub 替代在启动过程中不需要显示的 UI 控件。
1.3:使用自定义 View 替代复杂的 View 叠加。
2.主线程耗时操作
2.1:主线程中不要直接操作数据库,数据库的操作应该放在数据库线程中完成。
2.2:sharepreference尽量使用apply,少使用commit,可以使用MMKV框架来代替sharepreference。
2.3:网络请求回来的数据解析尽量放在子线程中,不要在主线程中进行复制的数据解析操作。
2.4:不要在activity的onResume和onCreate中进行耗时操作,比如大量的计算等。
2.5:不要在 draw 里面调用耗时函数,不能 new 对象
3.过度绘制
过度绘制是同一个像素点上被多次绘制,减少过度绘制一般减少布局背景叠加等方式,如下图所示右边是过度绘制的图片。
4.列表
RecyclerView使用优化,使用DiffUtil和notifyItemDataSetChanged进行局部更新等。
5.对象分配和回收优化
自从Android引入 ART 并且在Android 5.0上成为默认的运行时之后,对象分配和垃圾回收(GC)造成的卡顿已经显著降低了,但是由于对象分配和GC有额外的开销,它依然又可能使线程负载过重。 在一个调用不频繁的地方(比如按钮点击)分配对象是没有问题的,但如果在在一个被频繁调用的紧密的循环里,就需要避免对象分配来降低GC的压力。
减少小对象的频繁分配和回收操作