Fragment的使用有两种方式,一种是手动控制fragment的显示和隐藏,例如:
getFragmentManager().beginTransaction().hide(mFragmentArray[1]).show(mFragmentArray[0]).commitAllowingStateLoss();
一种是ViewPager和Fragment组合。这两种方式分别会触发不同的方法,来控制显示状态。第一种方式,会触发onHiddenChanged()方法。第二种方式,会触发setUserVisibleHint()。所以应该根据实际的使用场景来实现显示状态的监听。
另外,由于可能会存在fragement的嵌套,当父fragment没有在显示状态变更时,系统并不会自动同步子fragment的显示状态,所以这时候子fragment的显示状态并不可信,所以当子fragment需要判断当前的显示状态时,应该加上父fragment的显示状态的判断。