1
My MainActivity
にはDrawer
があり、クリックされたMenuItem
(this tutorialに基づく)に応じて、新しいFragment
がインスタンス化されます。Android/Java:断片化をインスタンス化するとメモリリークが発生しますか?
私はがわずかにすべてのフラグメントの変化にが増加しているメモリを、監視され、私はfragmentClass.newInstance()
は正しい方法ではないことを、心配。
// MainActivity
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
Fragment fragment = null;
Class fragmentClass = null;
if (id == R.id.nav_camera) {
fragmentClass = CameraFragment.class;
} else if (id == R.id.nav_gallery) {
fragmentClass = GalleryFragment.class;
} else if (id == R.id.nav_slideshow) {
fragmentClass = SlideshowFragment.class;
} else if (id == R.id.nav_manage) {
fragmentClass = ManageFragment.class;
} else if (id == R.id.nav_share) {
fragmentClass = ShareFragment.class;
} else if (id == R.id.nav_send) {
fragmentClass = SendFragment.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.layout_main, fragment).commit();
}
私が何か期待する:どのように私は、メモリリークを回避するか、これはさえ関係している可能性があり
// Pseudocode
if (fragmentManager.instanceExists(fragmentClass)) {
// load instantiated fragment
} else {
// newInstance()
}
を?
ありがとうございました!
というように、 'fragmentClass = CameraFragment.class'のように書くことができます'fragment = CameraFragment.newInstance()'そのクリーナーはもう少しだし、もうtry catchブロックは必要ありません。 – petey