方法是Fragment.setUserVisibleHint()
系统调用的,还是
我们手动调用的?
3 回答
查看源代码,看起来该系统主要用于放置在寻呼机中的片段。您(或例如片段寻呼机的实现)应将其设置为提示(“应用程序提供的提示”作为Fragment
源中的注释说),以便它可以例如延迟其加载(初始化),如果不是可见并优先加载可见片段(再次用于寻呼机时的典型需求)。
但请注意,FragmentPagerAdapter使用它并正确调用setUserVisibleHint()
其片段,这就是为什么我猜你看到一些人建议例如覆盖setUserVisibleHint()
以知道片段何时对用户可见(因此这只会在片段位于 a 内FragmentPagerAdapter
,而不是仅放入通常的活动布局中)。
所以要清楚地回答这个问题:你手动调用它,FragmentPagerAdapter
也手动调用它。
从文档:
向系统设置有关此片段的 UI 当前是否对用户可见的提示。此提示默认为 true,并且在片段实例状态保存和恢复中保持不变。
应用程序可以将此设置为 false 以指示 Fragment 的 UI 被滚动到不可见或不直接对用户可见。系统可以使用它来确定操作的优先级,例如片段生命周期更新或加载程序排序行为。
参数 isVisibleToUser 如果此片段的 UI 当前对用户可见,则为 true(默认),否则为 false。
听起来它默认为 True,如果需要,您可以将其设置为 False。
不适用于低于 15 版的 Android 和低于 11 版的 Android 支持库。