2016-08-13 69 views
0

我试图实现平板电脑和手机的默认设计模式: enter image description here创建新片段vs刷新现有片段 - 对性能有什么好处?

但我不清醒地认识到我应该重新片段B每listView.setOnItemClickListener来电或我只需要更新片段B的看法?性能更好,为什么?

我想创造新的片段(活动),而不是刷新现有的提供了更多的优点:

  1. 更简单的代码。
  2. 能够使用正常的活动堆栈来处理后退导航。

但为什么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

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

创建一个新的片段可以简化代码,但也强调垃圾收集器。它也会根据具体更新而变化,您不仅可以创建新对象,还可以重新构建完整视图层次结构。

智能重复使用总会提供更好的性能(考虑视图模式),有时牺牲可读性。