Чтобы понять это, вам нужно понять, как раздуты и размещены макеты.
Скажем, например, у вас есть активность, и это макет xml, который вы используете. Вот как выглядит макет действия перед тем, как вы поместите свой файл макета.
<FrameLayout // This is the window
...
<FrameLayout> // This is activity
</FrameLayout>
</FrameLayout>
В зависимости от устройства/ОС может быть несколько других уровней.
Теперь, когда вы раздуваете свой файл макета и вставляете его, так оно и будет выглядеть.
<FrameLayout // This is the window
...
<FrameLayout> // This is activity
// Your layout below
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
... a textview and 2 linearlayouts
</FrameLayout>
</FrameLayout>
</FrameLayout>
Вы видите FrameLayout внутри FrameLayout? Это избыточно, потому что это не добавляет большого значения. Чтобы оптимизировать, вы можете заменить FrameLayout на < merge>. Если вы используете, то это будет выглядеть.
<FrameLayout // This is the window
...
<FrameLayout // This is activity
// Your layout below
... a textview and 2 linearlayouts
</FrameLayout>
</FrameLayout>
Обратите внимание, что дополнительных кадров FrameLayout нет. Вместо этого он просто сливается с FrameLayout активности. Всякий раз, когда вы можете, вы должны использовать < merge>. Это относится не только к FrameLayouts. Вы можете прочитать больше об этом здесь. http://developer.android.com/training/improving-layouts/reusing-layouts.html#Merge
Надеюсь, это поможет.
В качестве примечания стороны: «Как правило, FrameLayout следует использовать для хранения одного дочернего представления» (из документов) –