Может ли нестатический 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
из представления, которое может прервать цикл?