我有一个 GridView,缩略图加载在一个单独的线程中。在所有缩略图加载完成后,如果我滚动网格视图,它会一直很慢(~5fps),直到我向下滚动几行,然后即使我再次向上滚动,它也会立即滚动非常快(~30fps)。
如果我然后重新填充gridview,它会再次变慢,直到我向下滚动一些。这不是回收观点的问题,因为我已经在这样做了。
(更新:上传正确的慢跟踪图像)
我将问题跟踪到内部视图绘制调用。这是运行缓慢时的 Android Studio 跟踪:
这是快速时的跟踪:
很明显有罪的方法是android.view.ThreadedRenderer.draw()
,但这是一个内部调用,我无法进一步测试。从跟踪中,我的理解是,不是绘图很慢,因为android.view.ThreadedRenderer.updateRootDisplayList()
最终调用android.widget.AbsListView.draw()
的在两个跟踪中都以同样快的速度完成。所以它必须android.view.ThreadedRenderer.draw()
是导致这种情况的其余部分。
我尝试过的事情:
在 gridview 上强制硬件渲染没有任何区别。
在 gridview 上强制软件渲染使列表总是滚动得很慢。
任何想法为什么会发生这种情况?