[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

좋은 웹페이지 즐겨찾기