在父类Fragment中重写setUserVisibleHint方法,与getUserVisibleHint
/** * Fragment当前状态是否可见 */ protected boolean isVisible; @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (getUserVisibleHint()) { isVisible = true; onVisible(); } else { isVisible = false; onInvisible(); } } /** * 可见 */ protected void onVisible() { lazyLoad(); } /** * 不可见 */ protected void onInvisible() { } /** * 延迟加载 * 子类必须重写此方法 */ protected abstract void lazyLoad();
在子类lazyLoad方法中加载数据时调用。
第一次没有创建fragment时,方法调用。
点击第1个fragment
06-21 19:12:09.093 13243-13243/? E/Tag: 1 HomeFragment onInvisible
06-21 19:12:09.094 13243-13243/? E/Tag: 2 DiscoveryFrament onInvisible
06-21 19:12:09.094 13243-13243/? E/Tag: 1 HomeFragment lazyLoad onVisible
点击第2个fragment
06-21 19:12:48.670 13243-13243/? E/Tag: 3 TopicFragment onInvisible
06-21 19:12:48.670 13243-13243/? E/Tag: 1 HomeFragment onInvisible
06-21 19:12:48.670 13243-13243/? E/Tag: 2 DiscoveryFrament lazyLoad onVisible
点击第3个fragment
06-21 19:13:07.217 13243-13243/? E/Tag: 4 MineFragment onInvisible
06-21 19:13:07.217 13243-13243/? E/Tag: 2 DiscoveryFrament onInvisible
06-21 19:13:07.217 13243-13243/? E/Tag: 3 TopicFragment lazyLoad onVisible
点击第4个fragment
06-21 19:13:22.322 13243-13243/? E/Tag: 3 TopicFragment onInvisible
06-21 19:13:22.322 13243-13243/? E/Tag: 4 MineFragment lazyLoad onVisible
所有fragment都创建时,方法调用。
点击第1个fragment
06-21 19:16:18.621 13243-13243/? E/Tag: 1 HomeFragment onInvisible
06-21 19:16:18.621 13243-13243/? E/Tag: 2 DiscoveryFrament onInvisible
06-21 19:16:18.621 13243-13243/? E/Tag: 4 MineFragment onInvisible
06-21 19:16:18.621 13243-13243/? E/Tag: 1 HomeFragment lazyLoad onVisible
点击第2个fragment
06-21 19:17:24.287 13243-13243/? E/Tag: 3 TopicFragment onInvisible
06-21 19:17:24.287 13243-13243/? E/Tag: 1 HomeFragment onInvisible
06-21 19:17:24.287 13243-13243/? E/Tag: 2 DiscoveryFrament lazyLoad onVisible
点击第3个fragment
06-21 19:17:47.493 13243-13243/? E/Tag: 4 MineFragment onInvisible
06-21 19:17:47.493 13243-13243/? E/Tag: 2 DiscoveryFrament onInvisible
06-21 19:17:47.493 13243-13243/? E/Tag: 3 TopicFragment lazyLoad onVisible
点击第4个fragment
06-21 19:18:28.165 13243-13243/? E/Tag: 3 TopicFragment onInvisible
06-21 19:18:28.165 13243-13243/? E/Tag: 4 MineFragment lazyLoad onVisible
在lazyLoad设置网络加载数据可以只加载当前页面数据。