2016-08-13 59 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你實際上檢查它是否是雙窗格模式。 如果沒有片段,那麼你必須開始一個新的活動,否則更新內容。

創建一個新的片段可以簡化代碼,但也強調垃圾收集器。它也會根據具體更新而變化,您不僅可以創建新對象,還可以重新構建完整視圖層次結構。

智能重複使用總會提供更好的性能(考慮視圖模式),有時犧牲可讀性。