UI 界面性能优化(三)

本文探讨了UI界面性能优化的各种方法,包括提前加载布局以减少显示时的耗时,使用View对象复用池,优化主线程操作,利用本地缓存加速数据展示,精简数据协议字段,调整线程优先级,以及自定义控件防止不必要的重新布局,旨在提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加快界面加载

除了从 XML Layout 文件里面角度减少布局层级,还通过提前加载布局,即在线程中做一些必要的 inflate 等来提前初始化布局,减少实际显示时的耗时。对于一些复杂的布局,我们还会自己做View对象复用池,减少 inflate 带来的性能损耗,特别是在列表控件中。

可以通过 TraceView 工具找出主线程的耗时操作和其他耗时的线程并作优化,另外减少主线程的 GC 停顿。因为即使并行 GC,也会对 heap 加锁,如果主线程请求分配内存的话,也会被挂起,所以尽量避免在主线程分配较多对象和较大的对象,特别是在onDraw等函数中,以减少被挂起的时间。另外可以通过去掉 ListView、ScrollView 等控件的 EdgeEffect 效果,来减少内存分配和加快控件的创建时间。

利用本地缓存,主要界面缓存上次的数据,并配合增量的更新和删除,能做到数据和服务端同步,这样可以直接展示本地数据,不用等到网络返回数据。

减少不必要的数据协议字段,减少名字长度等,并作压缩。还可以通过分页加载数据来加快传输解析时间。因为数据越大,传输和解析时间也会越久,引发的内存对象分配也会越多。

注意线程的优先级,对于占用 CPU 较多时间的函数,也要判断线程的优先级。

自定义控件防止重新布局

ListView 滑动、广告动画变化等过程中,图片和文字有变化,经常会发现整个界面被重新布局,影响了性能。尤其布局复杂时,测量过程很费时,导致明显卡顿。比如对于大小基本固定的控件和布局例如 TextView、ImageView 来说,这是多余的损耗。采取优化措施,我们使用自定义控件来阻断,重写方法requestLayout、onSizeChanged,如果大小没有变化就阻断这次请求。对于 ViewPager 等广告条,可以设置缓存子 View 的数量为广告的数量。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值