但我不清楚我是否应该在每次listView.setOnItemClickListener
调用时重新创建片段B,或者我只需要更新片段B的视图?什么是性能更好,为什么?
我认为创建新的Fragment(Activity)而不是刷新现有的片段会带来更多好处:
但为什么official android documentation会在解释中使用更新片段的内容?
public class MainActivity extends Activity implements TitlesFragment.OnItemSelectedListener {
...
/** This is a callback that the list fragment (Fragment A)
calls when a list item is selected */
public void onItemSelected(int position) {
DisplayFragment displayFrag = (DisplayFragment) getFragmentManager()
.findFragmentById(R.id.display_frag);
if (displayFrag == null) {
// DisplayFragment (Fragment B) is not in the layout (handset layout),
// so start DisplayActivity (Activity B)
// and pass it the info about the selected item
Intent intent = new Intent(this, DisplayActivity.class);
intent.putExtra("position", position);
startActivity(intent);
} else {
// DisplayFragment (Fragment B) is in the layout (tablet layout),
// so tell the fragment to update
displayFrag.updateContent(position); //WHY?
}
}
}
答案 0 :(得分:1)
在文档中使用了第二种方法:在平板电脑上 - 一个活动中的多个片段;在手机上 - 托管每个片段的单独活动。通过搜索displayFrag
,您实际上检查它是否是双窗格模式。
如果没有片段,则必须开始新活动,否则更新内容。
创建新片段可以简化代码,但也会对垃圾收集器造成压力。它也会因具体更新而异,您不仅可以创建新对象,还可以重建完整视图层次结构。
智能重用总是会牺牲可读性来提供更好的性能(考虑视图模式)。