Android Fragment碎片

当Fragment在显示时

方法1、public void setUserVisibleHint(boolean isVisibleToUser); //这里会判断当前Fragment是否以显示

方法2、public void onResume(); //这里开始显示Fragment

有时候需要在Fragment真正显示出来的时候在加载数据,例如和ViewPager组合使用时,ViewPager会预先加载上下一个Fragment,此时上下Fragment的onResume()方法就会被调用,恰好这并非期望发生的,所有setUserVisibleHint(boolean isVisibleToUser)会是个更好的选择。

FragmentPagerAdapter与FragmentStatePagerAdapter

相信这两个PagerAdapter的子类,大家都不陌生吧~~自从Fragment问世,使用ViewPager再结合上面任何一个实例的制作APP主页的案例特别多~~~

那么这两个类有何区别呢?

主要区别就在与对于fragment是否销毁,下面细说:

FragmentPagerAdapter:对于不再需要的fragment,选择调用detach方法,仅销毁视图,并不会销毁fragment实例。

FragmentStatePagerAdapter:会销毁不再需要的fragment,当当前事务提交以后,会彻底的将fragmeng从当前 Activity的FragmentManager中移除,state标明,销毁时,会将其onSaveInstanceState(Bundle outState)中的bundle信息保存下来,当用户切换回来,可以通过该bundle恢复生成新的fragment,也就是说,你可以在 onSaveInstanceState(Bundle outState)方法中保存一些数据,在onCreate中进行恢复创建。

如上所说,使用FragmentStatePagerAdapter当然更省内存,但是销毁新建也是需要时间的。一般情况下,如果你是制作主页面, 就3、4个Tab,那么可以选择使用FragmentPagerAdapter,如果你是用于ViewPager展示数量特别多的条目时,那么建议使用 FragmentStatePagerAdapter。

篇幅原因,具体的案例就不写了,大家自行测试。

原文地址:https://www.cnblogs.com/rfheh/p/4409961.html