Tencent / libpag

The official rendering library for PAG (Portable Animated Graphics) files that renders After Effects animations natively across multiple platforms.

Home Page:https://pag.art

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

android使用libpag时Java_org_libpag_PAGAnimator_setSync低概率出现ANR

15629199786 opened this issue · comments

【版本信息】

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: #1 pc 000000000004ef34 /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex(void volatile*, bool, int, bool, timespec const*)+144)
native: #2 pc 00000000000af134 /apex/com.android.runtime/lib64/bionic/libc.so (pthread_cond_wait+60)
native: #3 pc 0000000000222870 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???)
native: #4 pc 0000000000141614 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???)
native: #5 pc 0000000000099adc /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???)
native: #6 pc 0000000000099aa8 /system/priv-app/CustomSystemPlugin/lib/arm64/libpag.so (???)
native: #7 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 的其它原因可以看下这个帖子的分析:
#2322