Android: приведет ли адаптер как внутренний класс к утечке памяти? - PullRequest
0 голосов
/ 28 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...