开机动画播放视频耗时分析

流程耗时

下面是Bootanimation的耗时流程图

img

根据Bootanimation进程及日志分析,开机动画播放图片时主要耗时有3个地方。

  1. 等待RenderService
    这里在等待RenderService进程初始化成功,可以将RenderService进程提前启动来缩短这一步的耗时。

  2. media player准备
    这里的耗时主要是 Media::PlayerFactory::CreatePlayer()(1.2s)和 SetSource(uri)(0.8s)这两步。

    img

    根据日志这两步在 media 进程里,会获取 BMS 和 MemMgr 两个服务的SA id,如果获取失败(它们还没有注册id),会循环获取直到超时。
    根据实际情况,即使这两个服务都没有获取到也是可以正常播放开机动画的,因此可以根据实际情况在 media 端进行修改,也可以在 SA 端将获取失败再次获取的等待时长设置短一些。

  3. 视频播放
    这里的耗时就是视频的实际时长。

另:还有一种情况是 media 服务没起来导致Media::PlayerFactory::CreatePlayer()失败,这种情况会导致开机动画起播时间更晚。

总结

开机动画直接依赖于 RenderService、Media 服务,间接依赖于 BMS、MemMgr 等服务,他们任意一个服务启动晚了都可能导致开机动画启播时间晚的问题。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐