背景:

在A应用中启动关联的B应用,比在桌面冷启动B应用慢60~400ms,例如:

1. 在相机中启动图库比桌面冷启动图库慢439ms。

img

2. 在联系人中启动callui比桌面冷启动callui慢61ms。

img

原因分析

1. 分析trace,B应用保存ability状态,拿token被A应用快照阻塞

img

2. 分析代码

A应用退到后台最小化获取快照需要持锁managerLock_

img


B应用保存ability状态,拿token时,也需要这把managerLock_,导致B应用主线程阻塞。

img

方案优化

A应用退到后台最小化获取快照保存流程和B应用状态更新,没有强耦合,建议去掉A应用快照保存这把锁。

img

社区提交链接:https://gitee.com/openharmony/ability_ability_runtime/pulls/9151/files

Logo

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

更多推荐