The official rendering library for PAG (Portable Animated Graphics) files that renders After Effects animations natively across multiple platforms.
4.97k
stars
453
forks
source link
PAGImageView 同步下载由于持有锁导致的 watchdog 问题 #2396
Open
littlechaochao opened 2 months ago
【版本信息】
4.3.57
【平台信息】
iOS 原生
【预期的表现】
子线程 PAGImageView 触发 flush 方法进行下载,主线程调用 PAGImageView 的 setHidden: 方法,不应该触发 watchdog
【实际的情况】
子线程 PAGImageView 触发 flush 方法会导致 PAG 文件的下载,最终会调用到下面的方法进行同步下载:
如果网络下载比较耗时,PAGImageView 的 flush 方法一开始就持有了一个锁:
如果网络下载一直不返回,PAGImageView 的 flush 会一直持有这个锁,这样,如果主线程调用了其他方法,比如 setHidden:就会阻塞在这个锁上:
如果主线程阻塞时间过长,就会导致 watchdog,应用被杀死
【Demo及附件】