播放GIF时CPU占用率高
问题描述:
我在RecyclerView中显示GIF。代码:播放GIF时CPU占用率高
Glide.with(acitivity)
.load(url)
.placeholder(R.drawable.image_placeholder)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(listener)
.into(viewHolder.imageView);
如果我保持片段含有该RecyclerView开放,CPU的非常高的量(〜40%)是由应用程序使用。如果我使用碎片1-2分钟,手机就会变热。 GIF是否正常?我在这里做错了什么?
答
得到Glide贡献者对Github的回应。这是他们说的 -
高CPU消耗是正常的。滑翔这样做是为了节省内存并最终实现邪恶的OOM异常。
建议 -
- 使用静态
Bitmap
预览图像,避免自动播放。- 使用在超时或
setLoopCount
GlideDrawable/GifDrawable
更多:https://github.com/bumptech/glide/issues/1029
编辑:
检查这个问题,如果你正在使用ViewPager:https://github.com/bumptech/glide/issues/1028
你应该打开一个性能分析器在android studio中看看发生了什么,也许systrace可能会有所帮助。 – JoxTraex
性能分析器显示了最高的调用次数:'android.view.Choreographer $ FrameDisplayEventReceiver.run \t android.view.Choreographer.doFrame \t android.view.Choreographer.doCallbacks \t android.view.Choreographer $ CallbackRecord.run \t android.view.ViewRootImpl $ TraversalRunnable.run \t android.view.ViewRootImpl.doTraversal \t android.view.ViewRootImpl.performTraversals \t android.view.ViewRootImpl.performDraw \t android.view.ViewRootImpl.draw \t android.view.ThreadedRenderer.draw' –
尝试使用Facebook的壁画,这是很好的图书馆。 – UMESH0492