viewpager+fragment 게으름 불러오기 작업
3324 단어 android
viewpager가 페이지를 전환할 때fragment가 불러오기를 게을리 하는 것은 비교적 좋은 체험이고 유량을 절약하며 미리 불러올 때 발생하는 끊기는 현상을 피한다.
게으름 피우기 작업은fragment의 setUserVisibleHint () 및 getUserVisibleHint () 방법에 주로 사용됩니다
setUserVisibleHint () 방법은viewpageradapter 내부에서 호출되며fragment에 값을 부여합니다.fragment가 보이지 않으면false입니다.반대로 true입니다.
getUserVisibleHint () 방법은 이 값을 가져오는 것입니다.fragment에서 현재 볼 수 있는지 여부를 통해 데이터를 불러오는 작업을 합니다. 이렇게 하면 미리 불러오는 기능을 실현할 수 있습니다.
package cn.cibn.haokan.ui.categoryList;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import cn.cibn.haokan.ui.base.ImgBaseFragment;
public abstract class LazyFragment extends ImgBaseFragment{
/**
* Fragment title
*/
public String fragmentTitle;
/**
*
*/
private boolean isVisible;
/**
* ,View 。
* 2016/04/29
* isAdded()
* 2016/05/03
* isPrepared ,isAdded onCreateView isAdded
*/
private boolean isPrepared;
/**
*
*/
private boolean isFirstLoad = true;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// viewpager setOffscreenPageLimit
// Fragment onCreateView ( )
// initData ,
// isFirstLoad = true;
// 2016/04/29
// isFirstLoad = true , initData
// onCreateView FragmentManager initData .
// Bug initViews list.clear();
isFirstLoad = true;
View view = initViews(inflater, container, savedInstanceState);
isPrepared = true;
lazyLoad();
return view;
}
/**
* ViewPager , setUserVisibleHint
*
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint()) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInvisible();
}
}
/**
* FragmentTransaction show hide , onHiddenChanged.
* show Fragment hide show
*
* @param hidden hidden True if the fragment is now hidden, false if it is not
* visible.
*/
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (!hidden) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInvisible();
}
}
protected void onVisible() {
lazyLoad();
}
protected void onInvisible() {
}
/**
* Fragment , onCreateView
* isPrepared = true;
*/
protected void lazyLoad() {
if (isPrepared && isVisible && isFirstLoad) {
isFirstLoad = false;
initData();
}
}
protected abstract View initViews(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState);
protected abstract void initData();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.