一.前言
onResume() 是 Fragment 类中的一个生命周期方法,通常我们在该方法中可以进行一些初始化和更新操作。切换Fragment可以通过ViewPager和FragmentTransaction这两种方式,但是这两种方式触发onResume方法的时机却是不同的。
二.正文
1.ViewPager切换
当使用 ViewPager 切换 Fragment 时,系统会自动调用被切换的 Fragment 的生命周期方法。
当一个 Fragment 被创建添加到 ViewPager 中并且可见时,系统会调用该 Fragment 的 onResume()生命周期方法。
当一个Fragment再次被切换成ViewPager当前页面并且可见时,系统会调用该 Fragment 的 onResume() 生命周期方法。
2.FragmentTransaction切换
当使用 FragmentTransaction 替换 Fragment 时,系统不会自动调用生命周期方法。如果需要在替换 Fragment 时调用生命周期方法,需要手动调用。
当一个 Fragment 被创建添加到 FragmentTransaction 中管理并且show可见时,系统会调用该 Fragment 的onResume()生命周期方法。
此后再通过FragmentTransaction来隐藏或显示该Fragment时,系统都不会调用该 Fragment 的 onResume()生命周期方法,但会调用该Fragment 的 onHiddenChanged(boolean hidden) 回调函数。
因此当我们使用FragmentTransaction来管理Fragment时,为了在Fragment可见时都能实现onResume方法的效果,可以考虑以下方案:
(1)使用show()方法后手动调用Fragment的onResume() 方法;
(2)重写Fragment的 onHiddenChanged(boolean hidden),在里面再次实现和onResume的逻辑;
三.结语
本文基于自身知识经验编写,只供学习参考,不知之处还请指正,欢迎一起探讨交流!