PAGImageView在detach时存在性能问题,Android一些操作可以在子线程中,去优化性能? #2657
-
比如(这个是否有方法去优化): 或者我们想尝试在一些时机将一些操作在子线程中处理,优化性能,这个资料可以查询么 我认为下面默认这些都是需要在主线程中运行的? 另外的想咨询下,是否可以在播放 1 pag 结束后,从中间进行重复播放(监听end之后,setCurrentFrame(中间),或者更推荐使用2个PAG去做这种场景 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
1、 对于 pag 而言,播放的过程中渲染是在子线程渲染的,只有上屏在主线程,不需要业务方额外操作。 你这边使用的是 PAGImageView, 出现这个问题的另外一个原因是整个 pag 文件的渲染内容没有缓存完成页面已经销毁,如果缓存了完整数据,不会出现你这边遇到的问题 2、关于第二个问题,分为两种情况: |
Beta Was this translation helpful? Give feedback.
1、 对于 pag 而言,播放的过程中渲染是在子线程渲染的,只有上屏在主线程,不需要业务方额外操作。
对于销毁的时候,也就是你提到的 detach,由于 pag 渲染的 Surface 是由当前页面提供的,如果销毁的时候处于播放状态,需要等待当前帧播放完才能销毁,渲染的过程中直接把 Surface 销毁了可能会导致一些 crash,会执行 pagPlayer.setSurface(null); PAGPlayer 内部是线程安全的,这里会存在锁等待,等待当前帧渲染完成
你这边使用的是 PAGImageView, 出现这个问题的另外一个原因是整个 pag 文件的渲染内容没有缓存完成页面已经销毁,如果缓存了完整数据,不会出现你这边遇到的问题
2、关于第二个问题,分为两种情况:
PAGImageView:就是上面你提到的监听播放进度修改播放进度
PAGView:还有一种处理方式,基于 pag 的组合模式,新创建一个 PAGComposition,将 pag 文件的 PAGComposition添加进去,然后再添加 后边需要播放的一部分,具体可以参考下官方 demo