创建新片段vs刷新现有片段 - 性能更好?

时间:2016-08-13 09:45:49

标签: android android-fragments

我尝试为平板电脑和手机实施默认设计模式: enter image description here

但我不清楚我是否应该在每次listView.setOnItemClickListener调用时重新创建片段B,或者我只需要更新片段B的视图?什么是性能更好,为什么?

我认为创建新的Fragment(Activity)而不是刷新现有的片段会带来更多好处:

  1. 更简单的代码。
  2. 能够使用普通活动堆栈来处理反向导航。
  3. 但为什么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?
            }
        }
    }
    

1 个答案:

答案 0 :(得分:1)

在文档中使用了第二种方法:在平板电脑上 - 一个活动中的多个片段;在手机上 - 托管每个片段的单独活动。通过搜索displayFrag,您实际上检查它是否是双窗格模式。 如果没有片段,则必须开始新活动,否则更新内容。

创建新片段可以简化代码,但也会对垃圾收集器造成压力。它也会因具体更新而异,您不仅可以创建新对象,还可以重建完整视图层次结构。

智能重用总是会牺牲可读性来提供更好的性能(考虑视图模式)。