当在 ViewPager 中使用时,是否必须将片段的 `onDestroyView()` 中的视图设置为 null?

Do I have to set views to null in `onDestroyView()` for Fragments when used inside a ViewPager?

如果我有一个 FragmentStatePagerAdapter 有很多这样的 Fragment

public class MyFragment extends Fragment {
    View myView;

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState {
        myView =  view.findViewById(R.id.my_view);
    } 
}

现在假设我滚动到其他页面...这是否会泄露屏幕外其他页面的破坏视图(因为我有对它们的引用 - myViews)?

这样做有帮助吗:

@Override
public void onDestroyView() {
    myView = null;
}

不需要。 FragmentStatePagerAdapter 负责自动销毁片段。由于 myView 引用位于 Fragment 内部并且不是静态的,因此它也会被销毁。

FragmentStatePagerAdapter 文档:

https://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html

When pages are not visible to the user, their entire fragment may be destroyed, only keeping the saved state of that fragment

请注意,默认情况下,这会在内存中保存 3 个片段(如果可用)而不破坏。当前正在屏幕上显示的一个,一个在当前片段的左侧,一个在右侧。不过,您可以自定义该计数。