ユーザーがドロワーからナビゲートできる約10個のフラグメントを使用して、Android用の標準のナビゲーションドロワーパターンを実装しています。現在、別のナビゲーション ドロワー アイテムが次のようにクリックされるたびに、新しいフラグメントを作成しています。
// When a new navigation item at index is clicked
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
Fragment newFragment = null;
if (index == 0)
fragment = new Fragment0();
...
ft.replace(R.id.container, newFragment);
ft.commit();
次のようなことを行う方が効率的かどうか疑問に思っていました。
// Somewhere in onCreate
Fragment[] fragments = new Fragment[n];
fragments[0] = new Fragment0();
fragments[1] = new Fragment1();
...
// When a new navigation item (at index) is clicked
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.container, fragments[index]);
ft.commit();
私の主な懸念は、一部のフラグメントが大量のデータ (かなり大きなリストと多数のビュー) を保持していることです。これらすべてのフラグメントをメモリに保持する問題はありますか? また、新しいフラグメントを毎回インスタンス化するよりも利点がありますか (フラグメント間のより高速な切り替えは別として)? 一般的に受け入れられている「より良い」解決策はありますか?