我正在为 android 实现标准的抽屉导航模式,用户可以从抽屉导航到大约 10 个片段。目前,每次单击不同的导航抽屉项目时,我都会创建一个新的片段,如下所示:
// 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();
我主要担心的是一些片段包含大量数据(相当大的列表和大量视图)。将所有这些片段保存在内存中是否会有任何问题,并且它是否会比每次实例化新片段提供任何优势(除了片段之间的更快切换)?是否有普遍接受的“更好”解决方案?