Android:将Adapter作为内部类会导致内存泄漏吗?

时间:2019-02-28 10:30:15

标签: java android memory-leaks android-adapter

非静态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从而破坏循环?

0 个答案:

没有答案