当我在不同的Activity中将其设置为不同的RecyclerView时,RecycledViewPool是否可以正常工作?

时间:2018-10-25 08:10:57

标签: android android-recyclerview

当我们在RecyclerView中使用RecyclerView时,例如Google play App,我们可以为外部和内部RecyclerView设置相同的RecycleredViewPool。

如果两个RecyclerView在不同的活动中怎么办? RecycledViewPool仍然可以正常工作吗?这两个视图具有相同的适配器。

我已经尝试过,并且onCreateView调用了第二个活动,但是我认为是因为我错过了一些事情。

我这样做的原因是为了提高性能。每次调用onCreateView时,都会花费大量时间,因为LayoutInflater解析xml。

否则,将这个问题放在另一边,如何构建高性能列表页面,就像Youtube一样,他们的FPS很高。

1 个答案:

答案 0 :(得分:2)

您不应在多个“活动”中使用RecycledViewPool
内部的View引用了它们的宿主Context,并且在与其创建位置不同的Context中使用时无法正常工作。
另外,由于两个活动都保持活动状态,因此会导致内存泄漏,因为池引用了视图,引用了活动。

首先要做到这一点,您可能需要对RecycledViewPool进行静态引用。这应该是一个彻底的放弃,因为当您持有对视图的静态引用,因此间接持有对它们的上下文的引用时,这可能不是一个好主意。


TL; DR new活动意味着新的视图池。