내 안드로이드 앱에서 조각이 하나 있는데, 그 중 하나가 매우 무거웠습니다 (웹에서 많은 것을로드합니다). 다른 하나는 빛 (설정 패널과 같은)입니다.은 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); "... 이 코드를 수정 해 주시겠습니까?
oups, 첫 번째 게시물을 수정합니다 ... – Niko