news 2026/4/15 12:24:31

android 空调hvac CPU 占用45%分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
android 空调hvac CPU 占用45%分析

这次有一个黑屏问题,但是这个问题主要原因是

"main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x71d08518 self=0xb400007bdab5e7b0 | sysTid=1154 nice=0 cgrp=foreground sched=0/0 handle=0x7d6178d4f8 | state=S schedstat=( 6574416887 7326888929 18805 ) utm=440 stm=216 core=1 HZ=100 | stack=0x7fea186000-0x7fea188000 stackSize=8192KB | held mutexes= native: #00 pc 000000000009b0f4 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4) native: #01 pc 0000000000057de0 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156) native: #02 pc 0000000000053a1c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+296) native: #03 pc 0000000000054a08 /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+60) native: #04 pc 0000000000054778 /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+184) native: #05 pc 000000000004d0f4 /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+120) native: #06 pc 0000000000123dcc /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+152) at android.os.BinderProxy.transactNative(Native method) at android.os.BinderProxy.transact(BinderProxy.java:550) at com.desaysv.ivi.vdb.IVDBus$Stub$Proxy.get(IVDBus.java:170) at com.desaysv.ivi.vdb.client.bind.VDConnector.getOnce(VDConnector.java:339) at com.desaysv.ivi.vdb.client.bind.VDRouter.getOnce(VDRouter.java:210) at com.desaysv.ivi.vdb.client.VDBus.getOnce(VDBus.java:204) at com.android.systemui.e.i.f.d.b(MediaProxyImp.java:80) at com.android.systemui.e.i.f.d.e(MediaProxyImp.java:65) at com.android.systemui.e.i.f.d.a(MediaProxyImp.java:29) at com.android.systemui.e.i.f.d$1.onVDNotify(MediaProxyImp.java:43) at com.desaysv.ivi.vdb.client.bind.VDConnector.dispatchEvent(VDConnector.java:961) - locked <0x0398bab8> (a java.util.ArrayList) at com.desaysv.ivi.vdb.client.bind.VDConnector.access$200(VDConnector.java:48) at com.desaysv.ivi.vdb.client.bind.VDConnector$1.handleMessage(VDConnector.java:106) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7705) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1001) 01-22 16:52:45.904959 483 8155 E ActivityManager: Reason: Input dispatching timed out (8a87819 NavigationBar0 (server) is not responding. Waited 5118ms for MotionEvent(deviceId=3, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (722.0, 1640.0)]), policyFlags=0x62000000)

日志分析:
SystemUI 主线程在处理 VDBus 的 onVDNotify 回调时,同步执行了 VDBus.getOnce(),导致主线程被阻塞超过输入分发超时时间,从而触发 ANR。

修复策略:
不在 onVDNotify 回调中发起同步 VDBus.getOnce(),Binder 调用,改为直接使用 notify 数据,避免主线程阻塞

但是于此同时,发现了空调CPU占用45%,客户觉得高了,针对此问题,我这边设立了专项进行分析

442D HvacPageView: isAutoHvacConfig:0516506: 01-2216:49:56.20281724422442D HvacPageView: onProgressChanged: 7false 行516604: 01-2216:49:56.31451024422442D HvacPageView: executeUpdateBlowModeAnimation isSupHeatState:false,isSupCoolState:false;airConditionConfig:1 ionConfig:0;pm25Config:1 行516614: 01-2216:49:56.31558224422442D HvacPageView: executeUpdateBlowModeAnimation purry_type:3;fragranceOn:false;ionConfig:0 行516899: 01-2216:49:56.46580524422442D HvacPageView: onHvacCirculationModeStatus:2516900: 01-2216:49:56.46591224422442D HvacPageView: updateCirculationModeStatus:2516901: 01-2216:49:56.46610624422442D HvacPageView: isAutoHvacConfig:0516907: 01-2216:49:56.46951824422442D HvacPageView: onHvacBlowSpeedAuto:1516908: 01-2216:49:56.47269624422442D HvacPageView: onHvacBlowSpeedAuto invalidate 行517127: 01-2216:49:56.53126324422442D HvacPageView: onWindSpeedStatus:8517128: 01-2216:49:56.53129224422442D HvacPageView: isAutoHvacConfig:0517130: 01-2216:49:56.53179924422442D HvacPageView: onProgressChanged: 8false 行517131: 01-2216:49:56.53482824422442D HvacPageView: executeUpdateBlowModeAnimation handler 行517176: 01-2216:49:56.61551624422442D HvacPageView: mPvBlowModeFace:true;mPvBlowModeFoot:false;mPvBlowModeWindow:false 行517372: 01-2216:49:56.74083224422442D HvacPageView: onAutoStatus:0517384: 01-2216:49:56.74225724422442D HvacPageView: updateBlowModeBg isSlideChange: var:0 行517389: 01-2216:49:56.74319424422442D HvacPageView: setBlowModeAnimationAndSelected: face=true, foot=false, window=false,powerState=true517390: 01-2216:49:56.74327724422442D HvacPageView: isAutoHvacConfig:0517394: 01-2216:49:56.74434524422442D HvacPageView: startBlowWindFacePag var:1 shouldload:false 行517395: 01-2216:49:56.74443024422442D HvacPageView: loadAndPlayFacePag currentFacePath:pag/blow_face_open_day.pag;filePath:pag/blow_face_open_day.pag 行517397: 01-2216:49:56.74483224422442D HvacPageView: startBlowWindFootPag var:0 shouldload:false 行517398: 01-2216:49:56.74489024422442D HvacPageView: loadAndPlayFootPag currentFootPath:pag/blow_foot_close_day.pag;filePath:pag/blow_foot_close_day.pag 行517403: 01-2216:49:56.74538724422442D HvacPageView: startBlowWindWindowPag var:0 shouldload:false 行517404: 01-2216:49:56.74542024422442D HvacPageView: loadAndPlayWindowPag currentWindowPath:pag/blow_window_close_day.pag;filePath:pag/blow_window_close_day.pag 行517405: 01-2216:49:56.74543824422442D HvacPageView: setBlowModeAnimationAndSelected run 行517479: 01-2216:49:56.85150824422442D HvacPageView: executeUpdateBlowModeAnimation isSupHeatState:false,isSupCoolState:false;airConditionConfig:1 ionConfig

从附近时间点来看,在执行吹脚吹脸的吹风动效,同时也在收到mcu的风量变化的回调和加载小图标的动效,在涉及多个动效执行并且多个回调的场景情况下,CPU占用45%是正常的,之前其他项目出现CPU峰值70%甚至146%的情况
同时T1N项目来看T1N 的20260107数据,CPU前台1min是31.6%,峰值146%

和路试数据来看
2025年9月路试峰值48%(6 x 8核 = 48%)

当前45% CPU占用是正常现象,拉会系统同时一起分析此问题,反馈空调应用比较特殊,涉及动效场景多,不超过100%都不觉得高,因此最后澄清不是问题

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 21:24:02

Python+django基于微信小程序的城市公交查询系统 web pc 小程序手机端

文章目录 系统概述技术架构核心功能代码示例&#xff08;Django API&#xff09;部署与优化 系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 基于PythonDjango框架的城市公交查询系统&a…

作者头像 李华
网站建设 2026/3/25 9:24:05

亲测高中自习室:一流企业级体验复盘分享

亲测高中自习室&#xff1a;一流企业级体验复盘分享在高中学业压力日益增大的背景下&#xff0c;“自习室”早已不再是传统“安静自习”的代名词&#xff0c;而是逐渐演变为一种融合学习、管理、科技与服务的新型教育空间。作为一名长期关注教育科技发展的观察者&#xff0c;我…

作者头像 李华
网站建设 2026/3/25 20:54:19

django+Python微信小程序的食堂预约点餐系统的设计与实现

文章目录摘要系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 该系统基于Django框架和Python语言开发&#xff0c;旨在为校园或企业食堂提供一套高效的微信小程序预约点餐解决方案。通过整合微…

作者头像 李华
网站建设 2026/4/13 20:15:57

飞机订票系统(11843)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华
网站建设 2026/4/14 2:19:34

基于python的登录网站验证码的生成与识别系统(源码+文档)

项目简介 登录网站验证码的生成与识别系统实现了以下功能&#xff1a; 用python实现登录网站验证码功能&#xff1a; 设计两种验证码&#xff1a; 1 图形验证码&#xff0c;用python web框架Django能够实现动态刷新。 2 滑动验证码&#xff1a; 1.服务端随机生成小拼块和带有…

作者头像 李华
网站建设 2026/3/14 5:57:36

大数据领域数据预处理的前沿趋势分析

大数据领域数据预处理的前沿趋势分析 关键词:数据预处理、大数据、自动化清洗、实时流处理、隐私增强、AI驱动、图数据处理 摘要:在大数据时代,“数据质量决定决策质量"已成为行业共识。数据预处理作为数据分析的"第一公里”,直接影响后续建模、挖掘的效果。本文…

作者头像 李华