01
背景介绍
在智能手机市场上,高端机型经常备受瞩目,但低端机型亦占据了不可忽视的份额。众多厂商为满足低端市场的需求,不断推出低配系列手机。另外过去几年的中高端机型,随着系统硬件的快速迭代,现已经被归类为低端机型。爱奇艺APP拥有庞大的用户基群,其中低端机型用户也占据了相当一部分。低端机优化能给这部分用户带来稳定、流畅、高效的使用体验。下面将从冷启动、流畅性、加载速度三个维度介绍爱奇艺APP对低端机的优化策略。
低端机分级策略
介绍优化之前,我们看看低端机的标准,低端机设备的判断通常基于设备型号、内存大小和系统版本等因素。爱奇艺APP有自己的低端机分级策略,可在策略后台分场景(启动、流畅度等)、分等级(内存、机型、系统等)配置优化策略,以保障不同场景的最佳体验。
02
启动优化
启动是APP给用户打开的第一扇门,它的耗时长短直接影响用户后续的观感体验和留存,对业务指标有明显的影响。因此启动优化是技术优化方向的重点工作内容。
相关介绍
启动阶段的起点和终点:爱奇艺APP以 Application.attachBaseContext 为起点;以首页数据展现终点,该阶段经历的时长,作为线上正常冷启动耗时。这个主要经历 Application 创建阶段,MainActivity创建显示阶段,广告,首页顶底导航数据加载及渲染,首页数据加载及渲染这几个阶段。
在这个过程中,要梳理出业务层做了哪些工作,评估其执行的必要性和执行时机以及所处调度线程的合理性;要监测主线程状态,是否陷入长时间休眠;主线程消息/后台消息监测治理,是否有不符合预期的任务被触发;是否有充分利用系统资源,是否充分利用空闲时机做预加载等。
业务功能原子化:为将启动阶段的任务能够有序调度、合理分配资源,开发了一套对任务管理的框架TaskManager,将业务功能实现包装在自定义Task里面,拆分得足够细,并设定Task之间的执行依赖关系,预期被调度执行的线程,执行时机等,然后统一交由 TaskManager处理,这层任务管理是我们实施启动优化的基础。
优化实践
开屏首页合并
早期爱奇艺APP开屏和首页是两个activity,两个activity带来一些用户体验问题:开屏结束刚进首页时低端机卡顿明显,首页也没有立即展现,用户能看到首页数据和图片都有一个从无到有的加载过程。
开屏阶段大多数场景是有开屏广告的,将开屏和首页合并到一个activity,利用开屏广告阶段将首页放到开屏页面的下面加载,并且将首页数据和UI展现分离并行处理,最大利用该阶段,最终可达到开机屏结束时首页立即展现,低端机上卡顿也明显好转。
首页的渲染给开屏广告也带来的一定的影响。广告倒计时显示不稳定、少数类型的广告效果不流畅。对此首页加载拆成很多步骤在广告的回调的触发解决,倒计时显示使用surfaceView渲染保障其稳定性。