2012-04-03 2 views
2

내 안드로이드 앱에서 조각이 하나 있는데, 그 중 하나가 매우 무거웠습니다 (웹에서 많은 것을로드합니다). 다른 하나는 빛 (설정 패널과 같은)입니다.은 onDestroy가없는 조각을 대체합니다.

나는 이런 식으로 조각 사이를 전환 :

private Fragment myFragment1; 
private Fragment myFragment2; 
...... 
FragmentManager fm = getSupportFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.replace(R.id.main_fragment, myFragment2); 
ft.commit(); 

내 문제는 교체에 beeing 때 그것은 이동 중지()와 조각들의 OnDestroy()에가는 것입니다. 그리고들의 OnDestroy 내 무거운 물건을() 나는 큰 메모리 누수를 가지고 ... 해제하지 않기 때문에

나는/메모리에 내 모든 조각, 단지 쇼를 계속 화면에서 숨길 싶습니다 . 매번 모든 것을로드하지 않고도 화면을 빠르게 전환하는 것이 좋습니다.

그래서 질문은 다음과 같습니다. 내 조각을 모두 메모리에 저장하려면 어떻게해야합니까? 내가 좋아하는 sonething하고 싶은 :

Fragment1.onPause(); 
Fragment2.onResume(); 

그리고하지 :

Fragment1.onPause(); 
Fragment1.onStop(); 
Fragment1.onDestroy(); 
Fragment2.onCreate(); 
Fragment2.onResume(); 

한가지 더, 나는 안드로이드 2.2 이상에 android.support.v4.app.Fragment를 사용합니다.

고맙습니다.

편집 1 :

나는 도움을 발견하고 나는이 기능을했다 :

이 문제는 조각이 잘 교체하지 않는 것입니다
private void changeFragement(Fragment f, String fragmentTag) { 
    try { 
     if (f != null && fragmentTag != null) { 

      fm = getSupportFragmentManager(); 
      ft = fm.beginTransaction(); 
      Fragment currentFragment = fm.findFragmentById(R.id.main_fragment); 
      if (currentFragment != null) 
       ft.hide(currentFragment); 

      Fragment cachedFragment = fm.findFragmentByTag(fragmentTag); 
      if (cachedFragment == null) 
       ft.add(R.id.main_fragment, f, fragmentTag); 
      else 
       ft.show(f);    

      /*Fragment cachedFragment = fm.findFragmentByTag(fragmentTag); 
      if (cachedFragment == null) 
       cachedFragment = f; 
      ft.replace(R.id.main_fragment, cachedFragment, fragmentTag);*/ 

      ft.addToBackStack(null); 
      ft.commit(); 

     } 
    } catch (IllegalStateException err) { 
    } 
} 

, 내가 "피트 아 이해가 안 돼요을 .addToBackStack (null); "... 이 코드를 수정 해 주시겠습니까?

답변

1

수 없습니다. Android는 Fragments를 비롯한 활동, 서비스 등의 라이프 사이클을 처리합니다. 다시 생각해야합니다.

"백그라운드"조각이 문서에 있음을 알고 있습니다. 어쩌면 당신은 그 중 하나에서 로딩을 할 수 있고 표시/숨기기 다른 조각과 어떤 상태를 공유 할 수 있을까요?

+0

oups, 첫 번째 게시물을 수정합니다 ... – Niko

관련 문제