核心内容摘要
探索未知,尽享非凡:国产精品在线体验的全新维度
这次有一个黑屏问题但是这个问题主要原因是main prio5 tid1 Native | groupmain sCount1 dsCount0 flags1 obj0x71d08518 self0xb400007bdab5e7b0 | sysTid1154 nice0 cgrpforeground sched0/0 handle0x7d6178d4f8 | stateS schedstat( 6574416887 7326888929 18805 ) utm440 stm216 core1 HZ100 | stack0x7fea
x7fea188000 stackSize8192KB | held mutexes native: #00 pc 000000000009b0f4 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl
native: #01 pc 0000000000057de0 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl
native: #02 pc 0000000000053a1c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)
native: #03 pc 0000000000054a08 /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)
native: #04 pc 0000000000054778 /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const, android::Parcel*, unsigned int)
native: #05 pc 000000000004d0f4 /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const, android::Parcel*, unsigned int)
native: #06 pc 0000000000123dcc /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)
at android.os.BinderProxy.transactNative(Native method) at android.os.BinderProxy.transact(BinderProxy.java:
at com.desaysv.ivi.vdb.IVDBus$Stub$Proxy.get(IVDBus.java:
at com.desaysv.ivi.vdb.client.bind.VDConnector.getOnce(VDConnector.java:
at com.desaysv.ivi.vdb.client.bind.VDRouter.getOnce(VDRouter.java:
at com.desaysv.ivi.vdb.client.VDBus.getOnce(VDBus.java:
at com.android.systemui.e.i.f.d.b(MediaProxyImp.java:
at com.android.systemui.e.i.f.d.e(MediaProxyImp.java:
at com.android.systemui.e.i.f.d.a(MediaProxyImp.java:
at com.android.systemui.e.i.f.d$
onVDNotify(MediaProxyImp.java:
at com.desaysv.ivi.vdb.client.bind.VDConnector.dispatchEvent(VDConnector.java:
- locked 0x0398bab8 (a java.util.ArrayList) at com.desaysv.ivi.vdb.client.bind.VDConnector.access$200(VDConnector.java:
at com.desaysv.ivi.vdb.client.bind.VDConnector$
handleMessage(VDConnector.java:
at android.os.Handler.dispatchMessage(Handler.java:
at android.os.Looper.loop(Looper.java:
at android.app.ActivityThread.main(ActivityThread.java:
at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:
1001)
16:52:
4
904959 483 8155 E ActivityManager: Reason: Input dispatching timed out (8a87819 NavigationBar0 (server) is not responding. Waited 5118ms for MotionEvent(deviceId3, source0x00001002, displayId0, actionDOWN, actionButton0x00000000, flags0x00000000, metaState0x00000000, buttonState0x00000000, classificationNONE, edgeFlags0x00000000, xPrecision
0, yPrecision
0, xCursorPositionnan, yCursorPositionnan, pointers[0: (
7
0,
1640.
]), policyFlags0x
日志分析SystemUI 主线程在处理 VDBus 的 onVDNotify 回调时同步执行了 VDBus.getOnce()导致主线程被阻塞超过输入分发超时时间从而触发 ANR。
修复策略不在 onVDNotify 回调中发起同步 VDBus.getOnce()Binder 调用改为直接使用 notify 数据避免主线程阻塞但是于此同时发现了空调CPU占用45%客户觉得高了针对此问题我这边设立了专项进行分析442D HvacPageView: isAutoHvacConfig:0行516506:
:49:
5
20281724422442D HvacPageView: onProgressChanged: 7false 行516604:
:49:
5
31451024422442D HvacPageView: executeUpdateBlowModeAnimation isSupHeatState:false,isSupCoolState:false;airConditionConfig:1 ionConfig:0;pm25Config:1 行516614:
:49:
5
31558224422442D HvacPageView: executeUpdateBlowModeAnimation purry_type:3;fragranceOn:false;ionConfig:0 行516899:
:49:
5
46580524422442D HvacPageView: onHvacCirculationModeStatus:2行516900:
:49:
5
46591224422442D HvacPageView: updateCirculationModeStatus:2行516901:
:49:
5
46610624422442D HvacPageView: isAutoHvacConfig:0行516907:
:49:
5
46951824422442D HvacPageView: onHvacBlowSpeedAuto:1行516908:
:49:
5
47269624422442D HvacPageView: onHvacBlowSpeedAuto invalidate 行517127:
:49:
5
53126324422442D HvacPageView: onWindSpeedStatus:8行517128:
:49:
5
53129224422442D HvacPageView: isAutoHvacConfig:0行517130:
:49:
5
53179924422442D HvacPageView: onProgressChanged: 8false 行517131:
:49:
5
53482824422442D HvacPageView: executeUpdateBlowModeAnimation handler 行517176:
:49:
5
61551624422442D HvacPageView: mPvBlowModeFace:true;mPvBlowModeFoot:false;mPvBlowModeWindow:false 行517372:
:49:
5
74083224422442D HvacPageView: onAutoStatus:0行517384:
:49:
5
74225724422442D HvacPageView: updateBlowModeBg isSlideChange: var:0 行517389:
:49:
5
74319424422442D HvacPageView: setBlowModeAnimationAndSelected: facetrue, footfalse, windowfalse,powerStatetrue行517390:
:49:
5
74327724422442D HvacPageView: isAutoHvacConfig:0行517394:
:49:
5
74434524422442D HvacPageView: startBlowWindFacePag var:1 shouldload:false 行517395:
:49:
5
74443024422442D HvacPageView: loadAndPlayFacePag currentFacePath:pag/blow_face_open_day.pag;filePath:pag/blow_face_open_day.pag 行517397:
:49:
5
74483224422442D HvacPageView: startBlowWindFootPag var:0 shouldload:false 行517398:
:49:
5
74489024422442D HvacPageView: loadAndPlayFootPag currentFootPath:pag/blow_foot_close_day.pag;filePath:pag/blow_foot_close_day.pag 行517403:
:49:
5
74538724422442D HvacPageView: startBlowWindWindowPag var:0 shouldload:false 行517404:
:49:
5
74542024422442D HvacPageView: loadAndPlayWindowPag currentWindowPath:pag/blow_window_close_day.pag;filePath:pag/blow_window_close_day.pag 行517405:
:49:
5
74543824422442D HvacPageView: setBlowModeAnimationAndSelected run 行517479:
:49:
5
85150824422442D HvacPageView: executeUpdateBlowModeAnimation isSupHeatState:false,isSupCoolState:false;airConditionConfig:1 ionConfig从附近时间点来看在执行吹脚吹脸的吹风动效同时也在收到mcu的风量变化的回调和加载小图标的动效在涉及多个动效执行并且多个回调的场景情况下,CPU占用45%是正常的之前其他项目出现CPU峰值70%甚至146%的情况同时T1N项目来看T1N 的20260107数据CPU前台1min是
3