Open 15629199786 opened 4 months ago
4.3.8
Android 原生
pag动画资源,依赖的pag库内部不会发生了ANR
pag动画资源,依赖的pag库内部发生了ANR
"main" prio=5 tid=1 Native
group="main" sCount=1 dsCount=0 flags=1 obj=0x72bdd508 self=0xb400e1c2f7a437b0 sysTid=2113 nice=-20 cgrp=default sched=1073741825/1 handle=0xe1c41e3794f8 state=S schedstat=( 18190784541 320796713 63662 ) utm=1409 stm=409 core=1 HZ=100 stack=0xffffc5394000-0xffffc5396000 stackSize=8192KB held mutexes= native: #00 pc 000000000004b34c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 000000000004ef34 /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex(void volatile, bool, int, bool, timespec const)+144) native: #02 pc 00000000000af134 /apex/com.android.runtime/lib64/bionic/libc.so (pthread_cond_wait+60) native: #03 pc 0000000000222870 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???) native: #04 pc 0000000000141614 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???) native: #05 pc 0000000000099adc /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???) native: #06 pc 0000000000099aa8 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???) native: #07 pc 0000000000100594 /system/priv-app/CustomSystemUIPlugin/lib/arm64/libpag.so (Java_org_libpag_PAGAnimator_setSync+84) at org.libpag.PAGAnimator.setSync(Native method) at org.libpag.PAGView.setSync(SourceFile:-1) at com.custom.systemplugin.qs.tileviewimpl.QSIconViewImpl.updateIcon(SourceFile:-1) at com.custom.systemplugin.qs.tileviewimpl.QSIconViewImpl.setIcon(SourceFile:-1) at com.custom.systemplugin.qs.tileviewimpl.QSTileViewDefault.handleStateChanged(SourceFile:-1) at com.custom.systemplugin.qs.QSTileView.lambda$onStateChanged$0(SourceFile:-1) at com.custom.systemplugin.qs.QSTileView.a(SourceFile:-1)
这里需要调用 setSync 的原因是啥? 大部分情况下是不需要调用这个接口的,如果设置为 true,意味着所有的渲染都会在主线程执行,默认渲染是在子线程执行的,只有上屏才会切换到主线程
关于 ANR 的其它原因可以看下这个帖子的分析: https://github.com/Tencent/libpag/issues/2322
【版本信息】
4.3.8
【平台信息】
Android 原生
【预期的表现】
pag动画资源,依赖的pag库内部不会发生了ANR
【实际的情况】
pag动画资源,依赖的pag库内部发生了ANR
【Demo及附件】
"main" prio=5 tid=1 Native
group="main" sCount=1 dsCount=0 flags=1 obj=0x72bdd508 self=0xb400e1c2f7a437b0 sysTid=2113 nice=-20 cgrp=default sched=1073741825/1 handle=0xe1c41e3794f8 state=S schedstat=( 18190784541 320796713 63662 ) utm=1409 stm=409 core=1 HZ=100 stack=0xffffc5394000-0xffffc5396000 stackSize=8192KB held mutexes= native: #00 pc 000000000004b34c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 000000000004ef34 /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex(void volatile, bool, int, bool, timespec const)+144) native: #02 pc 00000000000af134 /apex/com.android.runtime/lib64/bionic/libc.so (pthread_cond_wait+60) native: #03 pc 0000000000222870 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???) native: #04 pc 0000000000141614 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???) native: #05 pc 0000000000099adc /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???) native: #06 pc 0000000000099aa8 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???) native: #07 pc 0000000000100594 /system/priv-app/CustomSystemUIPlugin/lib/arm64/libpag.so (Java_org_libpag_PAGAnimator_setSync+84) at org.libpag.PAGAnimator.setSync(Native method) at org.libpag.PAGView.setSync(SourceFile:-1) at com.custom.systemplugin.qs.tileviewimpl.QSIconViewImpl.updateIcon(SourceFile:-1) at com.custom.systemplugin.qs.tileviewimpl.QSIconViewImpl.setIcon(SourceFile:-1) at com.custom.systemplugin.qs.tileviewimpl.QSTileViewDefault.handleStateChanged(SourceFile:-1) at com.custom.systemplugin.qs.QSTileView.lambda$onStateChanged$0(SourceFile:-1) at com.custom.systemplugin.qs.QSTileView.a(SourceFile:-1)