非静态Adapter
是否会因为内部类导致内存泄漏?代码结构如下。
public class XXFragment extends Fragment{
// Data Binding of the content view.
private XXBinding mBinding;
@Override
public View onCreateView(...) {
mBinding = DataBindingUtil.inflate(...);
mBinding.pager.setAdapter(new XXAdapter(...));
return mBinding.getRoot();
}
private class XXAdapter extends RecyclerView.Adapter<...>{...}
}
似乎引用会形成一个循环:
Fragment
对其DataBinding
的引用是field
。DataBinding
内部持有对RecyclerView
的引用。RecyclerView
自设置以来在内部保存对其Adapter
的引用。Adapter
作为Fragment
内部类的实例,在内部持有对Fragment
的引用。所以就像Fragment->DataBinding->RecyclerView->Adapter->Fragment
。
这是正确的吗?还是Android会自动从视图中删除Adapter
从而破坏循环?