private void onDetachedFromViewPager(@NonNull ViewPager pager) { if (mView instanceof TabStripView) ((TabStripView) mView).onDetachedFromViewPager(pager); else if (mView instanceof TabStripViewGroup) ((TabStripViewGroup) mView).onDetachedFromViewPager(pager); pager.removeOnPageChangeListener(this); pager.removeOnAdapterChangeListener(this); final PagerAdapter adapter = pager.getAdapter(); if (adapter != null) { adapter.unregisterDataSetObserver(this); } }
/** * Unregister internal listener objects, release object references, etc. * This method should be called in order to avoid memory leaks. */ public void release() { cancelPendingAdjustTabMode(); cancelPendingSetTabsFromPagerAdapter(); cancelPendingUpdateScrollPosition(); if (mInternalOnAdapterChangeListener != null) { mViewPager.removeOnAdapterChangeListener(mInternalOnAdapterChangeListener); mInternalOnAdapterChangeListener = null; } if (mInternalDataSetObserver != null) { mViewPager.getAdapter().unregisterDataSetObserver(mInternalDataSetObserver); mInternalDataSetObserver = null; } if (mInternalOnTabSelectedListener != null) { mTabLayout.removeOnTabSelectedListener(mInternalOnTabSelectedListener); mInternalOnTabSelectedListener = null; } if (mInternalTabLayoutOnPageChangeListener != null) { mViewPager.removeOnPageChangeListener(mInternalTabLayoutOnPageChangeListener); mInternalTabLayoutOnPageChangeListener = null; } mViewPager = null; mTabLayout = null; }