Android 에서 ViewPager 를 사용 하여 Fragment 를 빠르게 전환 할 때 멈 추 는 최적화 방안
최적화 방안:
1.Fragment 경 량 화
ViewPager 가 불 러 온 Fragment 가 비교적 가 벼 우 면 Fragment 의 구 조 를 적당 하 게 간소화 하고 Fragment 가 불 러 오 는 속 도 를 높 여 카드 가 걸 리 는 현상 을 늦 출 수 있 습 니 다.
2.Fragment 소각 방지
ViewPager 는 전환 할 때 Fragment 를 자주 폐기 하고 불 러 오 면 쉽게 끊 기 는 현상 이 발생 하고 Fragment 의 폐 기 를 막 으 면 끊 기 는 현상 을 효과적으로 늦 출 수 있다.
(1)PagerAdapter 에 destroy Item 을 덮어 쓰 는 방법 은 Fragment 폐 기 를 막 을 수 있 습 니 다.
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
}
(2)PagerAdapter 의 setOffscreenPageLimit()방법 을 통 해 몇 개의 Fragment 를 보존 하 는 것 을 설정 할 수 있 습 니 다.파 라 메 터 를 적당 하 게 확대 하면 Fragment 가 자주 소각 되 고 생 성 되 는 것 을 방지 할 수 있 습 니 다.위험:Fragment 가 비교적 많은 상황 에서 일부 저급 모델 은 OOM 문제 가 발생 하기 쉽다.
3.Fragment 내용 로드 지연
(1)설명
현재 Fragment 로 전환 할 때 Fragment 의 내용 을 바로 불 러 오지 않 고 간단 한 빈 레이아웃 을 불 러 온 다음 지연 작업 을 시작 합 니 다.지연 시간 은 T 입 니 다.사용자 가 이 Fragment 에 머 무 는 시간 이 T 를 초과 할 때 로드 작업 을 계속 수행 합 니 다.사용자 가 다른 Fragment 로 전환 하면 체류 시간 이 T 보다 적 으 면 이 지연 작업 을 취소 합 니 다.
(2)구체 적 인 조작
우선 지연 작업 설정
private Runnable LOAD_DATA = new Runnable() {
@Override
public void run() {
// Fragment
}
};
시작 작업
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// , ,
initView();
// , 500 handler.postDelayed(LOAD_DATA,500)
return view;
}
사용자 가 다른 Fragment 로 전환 하면 작업 을 취소 합 니 다.
// Fragment
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(!isVisibleToUser)
mHandler.removeCallbacks(LOAD_DATA);
}
(3)주의setUserVisible Hint 를 사용 하여 사용자 가 다른 Fragment 로 전환 할 지 여 부 를 판단 합 니 다.이러한 방법 은 결함 이 있 습 니 다.ViewPager 가 미 끄 러 지기 시작 할 때 지연 작업 을 취소 하고 미끄럼 오프셋 이 부족 한 상황 에서 ViewPager 는 현재 Fragment 로 계속 스크롤 하여 현재 Fragment 의 로드 작업 이 취소 되 고 로드 작업 을 다시 시작 하지 않 습 니 다.
여기 서 제 가 사용 하 는 방법 은 ViewPager 에 OnPageChange Listener 를 추가 하 는 것 입 니 다.이 모니터 의 onPageSelected(position)는 ViewPager 가 현재 어느 Fragment 로 전환 하 는 지 감청 할 수 있 습 니 다.여기 서 다른 Fragment 의 지연 로드 작업 을 취소 합 니 다.
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
순서가 있는 엑토ID가 1, 2, 4, 3인 게시물을 쿼리하고 이 순서를 유지하려고 합니다. postgres를 사용하는 가장 좋은 솔루션은 입니다. 쿼리 완료 구성 가능한 쿼리...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.