1

如果我有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;
}
4

1 回答 1

4

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

FragmentStatePagerAdapter 文档:

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

当页面对用户不可见时,它们的整个片段可能会被销毁,只保留该片段的保存状态

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

于 2017-08-03T13:19:49.260 回答