在我的 android 应用程序中,我有列表视图和列表项详细信息视图。
列表视图和详细信息视图是一个活动中的片段。最初,我将列表片段加载到活动中,如果用户单击列表项,它将用详细片段替换相同的视图,并将该片段添加到一个活动中的后台堆栈。
代码:
String backStateName = fragment.getClass().getName();
String fragmentTag = backStateName;
FragmentManager manager = activity.getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);
if ( !fragmentPopped && manager.findFragmentByTag(fragmentTag) == null){
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.main_place_holder, fragment, fragmentTag);
ft.addToBackStack(backStateName);
ft.commit();
}
如果用户单击后退按钮,它将进入列表视图,这很好。
所以我的问题是,如果用户在列表项应用程序上单击多次(超过 10 次)会因OutOfMemory崩溃
我搜索过,人们说这是 backstack 的正常行为,即使从堆栈中弹出这些片段,它也不会从内存中清除添加的片段。
由于业务需求,我不能为此进行两项活动。
我的方法不是列表和详细信息片段具有相同的活动并通过使用 backstack 来交还导航是最好的方式吗?
如果不是我应该遵循的最佳选择是什么?