【发布时间】:2017-06-20 18:31:55
【问题描述】:
单击项目转到详细信息时,我有一个提要,在此期间,FeedFragment 已分离并已推送 DetailsFragment。返回时,我们正在检查适配器是否不为空。
if (adapter == null) {
adapter = createAdapter();
}
if (recyclerView.getAdapter() == null) {
recyclerView.setAdapter(adapter);
}
问题在于,每次查看详细信息并返回时重用适配器时,ViewHolders 的数量会增加一倍。它可以一直持续到它冻结应用并发生 OOM。
问题是为什么会这样?适配器不应该从 recyclerView 中分离出来,所有的项目都应该被回收吗?
附:返回时创建新适配器时不会出现此问题。
【问题讨论】:
-
您确定收到 onDetach 回调吗?并且ViewHolders 的数量增加了一倍,为此您需要在适配器内部具有 clearAdaptor 函数,该函数可以清除传递给适配器的数据并通知数据集发生更改。
-
发布
createAdapter()代码。 -
@Sanoop 我正在做
public abstract FragmentTransaction detach(Fragment fragment);但onDetach 没有发生在片段上。是的,它加倍,我专门为此目的研究了堆 -
你有没有检查this里面的评论。
-
是的,片段行为也可能导致这种情况
标签: android android-recyclerview