PAGView#setProgress调用耗时180ms,能否在子线程中调用PAGView#setProgress方法?
#2874
-
|
我们有一个进度条,拖拽时会调用 请问 |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 8 replies
-
|
你没有找到问题的根本原因,setProgress 本身并不耗时,但如果在动效播放的时候调用,由于 pag 内部是线程安全的,渲染的过程中内部会调用到 PAGPlayer 的相关方法,公开的方法都添加有锁,这里会存在锁等待,如播放的过程中需要等待 flush 方法执行完才会执行 setProgress 的具体操作,从而产生你现在测试的卡顿。 |
Beta Was this translation helpful? Give feedback.
-
|
我也有类似的问题,求大佬解答 |
Beta Was this translation helpful? Give feedback.


你没有找到问题的根本原因,setProgress 本身并不耗时,但如果在动效播放的时候调用,由于 pag 内部是线程安全的,渲染的过程中内部会调用到 PAGPlayer 的相关方法,公开的方法都添加有锁,这里会存在锁等待,如播放的过程中需要等待 flush 方法执行完才会执行 setProgress 的具体操作,从而产生你现在测试的卡顿。
解决方法: 和视频播放过程中拖动避免卡顿的解决方法一样,当触发拖动时,此时要停止播放来保证用户操作的流程性,拖动结束后再渲染当前帧或重启播放