[Fragment 심도 시리즈 7] Fragment 전환 최적화
4347 단어 android 향상
1. Fragment+RadioGroup
프로젝트에서 Fragment 전환이 필요합니다. 항상 Replace () 방법으로 Fragment를 대체합니다. 그리고 전환할 때 약간 끊기는 느낌이 듭니다.
1. 이전 코드:
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkID) {
switch (checkID) {
case R.id.rabt01:
if (searchFragment == null) {
searchFragment = new SearchFragment();
getSupportFragmentManager().beginTransaction().hide().add(R.id.linnerlayout, searchFragment).commit();
}
break;
case R.id.rabt02:
downFragment = new DownFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.linnerlayout, downFragment).commit();
break;
case R.id.rabt03:
listenFragment = new ListenFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.linnerlayout, listenFragment).commit();
break;
case R.id.rabt04:
myFragment = new MyFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.linnerlayout, myFragment).commit();
break;
}
}
});
2. 원인 분석:
리플렉스는 매번fragment의 onCreateView () 방법을 다시 호출하기 때문에 시간을 낭비합니다.
3. 해결 방법:
올바른 전환 방식은dd()이고 전환할 때hide(),dd()또다른Fragment;다시 전환할 때, 하이드 () 현재, show () 다른 것만 있으면 됩니다.이렇게 하면 onCreateView 함수를 다시 호출하지 않습니다.
FragmentTransactioin은fragment를 추가하거나 삭제하거나fragment의 표시와 숨김을 제어할 수 있습니다.
이것은 addToBackStack (null) 를 호출하면, 이 상태는 퇴적 창고에 저장되고, 퇴적 키를 누르면 창고 꼭대기에 표시됩니다.
Android 최적화 Fragment 페이지에서 inflate 를 여러 번 방지합니다.http://www.th7.cn/Program/Android/201411/311607.shtml
4. 코드 개선
서로 다른 Fragment 사이를 전환하는 방법:http://www.th7.cn/Program/Android/201503/408512.shtml
현재fragment를 기록하기 위해 전역 변수를 유지해야 합니다.또 판단을 해야 하기 때문에 추출할 수 있는 방법이 있다.
Fragment 전환 최적화:http://www.tuicool.com/articles/iEfIvqb
2. ViewPager+Fragment
Fragment의 트랩:http://mobile.51cto.com/abased-446691.htm
fragment+viewpager 최적화 정보:http://www.bubuko.com/infodetail-648897.html