目录

ArkUI页面点击图片查看时加载缓慢

问题现象

图片是应用页面中常见的内容,会在应用页面中占用适当的空间。为了避免图片占用空间过大导致屏幕无法显示文字内容,同时能够查看到图片的细节,应用提供了点击图片放大查看图片细节的功能。

在点击图片查看时,通常期望能够更快地查看到图片细节,但在一些应用中,需要等待一段时间才能够看到放大后的图片,存在图片加载慢的问题。

背景知识

问题定位

  1. 在日志中搜索SignalPoll查看chload、noise、rssi参数值判断网络环境质量,如chload值大于500或rssi值在-80左右或noise值大于-80,则网络环境质量较差,会导致图片加载慢。
    04-22 15:40:34.628  2443 32558 I C01560/wifi_manager_service/StaStateMachine: SignalPoll,bssid:48:b2:**:**:**:22,ssid:Hua******est,networkId:44,band:2,freq:5805,rssi:-57,noise:-89,chload:841, ...
    04-22 15:40:35.647  2443 32558 I C01560/wifi_manager_service/StaStateMachine: SignalPoll,bssid:48:b2:**:**:**:22,ssid:Hua******est,networkId:44,band:2,freq:5805,rssi:-57,noise:-89,chload:841, ...
    04-22 15:40:36.666  2443 31712 I C01560/wifi_manager_service/StaStateMachine: SignalPoll,bssid:48:b2:**:**:**:22,ssid:Hua******est,networkId:44,band:2,freq:5805,rssi:-57,noise:-91,chload:880, ...
    04-22 15:40:37.688  2443 13198 I C01560/wifi_manager_service/StaStateMachine: SignalPoll,bssid:48:b2:**:**:**:22,ssid:Hua******est,networkId:44,band:2,freq:5805,rssi:-57,noise:-91,chload:842, ...
    04-22 15:40:38.704  2443 32558 I C01560/wifi_manager_service/StaStateMachine: SignalPoll,bssid:48:b2:**:**:**:22,ssid:Hua******est,networkId:44,band:2,freq:5805,rssi:-57,noise:-90,chload:830, ...
    04-22 15:40:39.722  2443 13198 I C01560/wifi_manager_service/StaStateMachine: SignalPoll,bssid:48:b2:**:**:**:22,ssid:Hua******est,networkId:44,band:2,freq:5805,rssi:-57,noise:-88,chload:879, ...
    04-22 15:40:40.742  2443 32255 I C01560/wifi_manager_service/StaStateMachine: SignalPoll,bssid:48:b2:**:**:**:22,ssid:Hua******est,networkId:44,band:2,freq:5805,rssi:-56,noise:-89,chload:882, ...
    04-22 15:40:41.757  2443 32558 I C01560/wifi_manager_service/StaStateMachine: SignalPoll,bssid:48:b2:**:**:**:22,ssid:Hua******est,networkId:44,band:2,freq:5805,rssi:-56,noise:-88,chload:866, ...
  2. 如网络环境正常,使用DevEco Profiler ArkUI分析工具抓取点击图片到图片全屏显示完成的Trace信息,点击应用主线程泳道,在下方弹框中的Slice List页使用H:OnImageLoadSuccess来过滤图片加载完成的Trace信息,发现一共有7个Image组件加载图片资源完成。

    由于无法确认何时图片全屏显示完成,使用Ark Inspector查看全屏显示完成后的Image组件,发现该组件Id为5505,在右侧Attributes中的输入框输入src确认图片数据源为网络图片。

    在Profiler上方搜索框中分别输入type=1和H:OnImageLoadSuccess[self:5505]找到点击图片、图片全屏显示完成的位置,如下图所示,两者时间间隔3.6s,页面切换过程400ms左右,可知点击图片后400ms切换到新页面,过了3.2s后图片才全屏显示完成。

  3. 查看图片资源下载完成Trace点(H:DownloadImage)左侧的Runnable状态信息,可知应用主线程是由OS_NET_HttpWork线程唤醒,即该图片资源是应用通过http请求访问服务器下载的。

    查看http请求Trace点信息,可知该图片下载耗时达到3.2s。

    排查日志中NETSTACK、Download image关键日志,发现该图片大小为6.95M,图片资源较大导致查看图片时图片加载慢的问题。

    02-28 09:49:45.136   14651-15038  C015B0/com.exam...ion/NETSTACK com.examp...lication     I     taskid=68, size:7292359, dns:0.130, connect:0.000, tls:0.000, firstSend:0.197, firstRecv:128.160, total:3029.077, redirect:0.000, errCode:0, RespCode:200, httpVer:2, method:GET, osErr:0
    02-28 09:49:45.136   14651-14651  C0391F/com.exam...ion/AceImage com.examp...lication     I     [(100000:100000:scope)] Download image successfully, nodeId = 4216, accessId = 4217, srcInfo = <private>, ImageData length=7292359

分析结论

图片放大查看时出现加载慢问题的原因有:

修改建议