目录

点击桌面应用卡片按钮,按钮状态变化响应慢

问题现象

点击桌面应用卡片按钮,按钮状态过了一段时间才变化(如"打开"切换到"关闭"或"关闭"切换到"打开"),响应慢。

背景知识

问题定位

  1. 在日志中搜索Click accepted, tag: FormComponent|OnActionEventHandle ,formId:|FormManagerService.*?update formId|FormRenderer: UpdateForm formId关键字,根据日志关键字的时间间隔确定各阶段耗时,从以下日志中可看到耗时主要集中在卡片交互事件处理至卡片管理服务更新卡片阶段,该部分涉及到应用业务处理流程,需要结合应用日志分析确认最终耗时较多的部分。
    06-07 10:23:45.866  4544  4544 I C03951/com.ohos.sceneboard/InputKeyFlow: [(100000:100000:scope)] Click accepted, tag: FormComponent
    06-07 10:23:45.870  4544  4589 I C03904/com.ohos.sceneboard/AceForm: [(-1:100000:singleton)] EventHandle - OnActionEventHandle ,formId: 1763614067
    06-07 10:23:49.022  1496  2389 I C01301/foundation/FormManagerService: [form_render_mgr.cpp(UpdateRenderingForm:116)]update formId:1763614067,3465
    06-07 10:23:49.092  6261 17557 I C039FF/com.ohos.formrenderservice/FormRenderer: UpdateForm formId 1763614067.
  2. 通过应用包名确认应用进程号,然后在上述日志关键字中加入应用进程号来搜索日志关键字,排查应用日志,从以下日志中可看到桌面应用处理卡片交互事件十几毫秒之后,应用有相关日志打印,因此可知卡片交互事件传递到应用侧无较长的时延,而应用收到卡片交互事件到触发更新卡片数据时间间隔达到3s左右,耗时主要集中在应用侧,应用业务逻辑复杂,耗时较多,导致卡片按钮状态更新响应慢的问题。
    06-07 10:23:45.866  4544  4544 I C03951/com.ohos.sceneboard/InputKeyFlow: [(100000:100000:scope)] Click accepted, tag: FormComponent
    06-07 10:23:45.870  4544  4589 I C03904/com.ohos.sceneboard/AceForm: [(-1:100000:singleton)] EventHandle - OnActionEventHandle ,formId: 1763614067
    06-07 10:23:45.879 24607 24607 E C01332/com.hm.example/UIAbility: [js_ui_ability.cpp:1448]null remoteCallee_
    06-07 10:23:45.881 24607 24607 I C057C8/com.hm.example/napi_remoteObject: OnJsRemoteRequestCallBack 366: enter thread pool time:314682436703626
    06-07 10:23:49.016 24607 24607 I A03D00/com.hm.example/JSAPP: ... updateForm: 1763614067 ...
    06-07 10:23:49.022  1496  2389 I C01301/foundation/FormManagerService: [form_render_mgr.cpp(UpdateRenderingForm:116)]update formId:1763614067,3465
    06-07 10:23:49.092  6261 17557 I C039FF/com.ohos.formrenderservice/FormRenderer: UpdateForm formId 1763614067.

分析结论

应用接收到卡片交互事件处理时,业务逻辑复杂,耗时较多,更新卡片状态慢,导致按钮状态变化响应慢。

修改建议

优化耗时业务逻辑或在收到卡片交互事件时更新卡片状态提示加载中。