2016-05-17 12 views

Antwort

1

Wie Sie in this article sehen können, wenn Sie ViewStub verwenden, das Layout, die Sie <include /> innerhalb der Stub aufgeblasen wird nicht, es sei denn erforderlich (die Sichtbarkeit des Stub VISIBLE Einstellung oder rufen show()). Der Vorteil ist, dass keine der enthaltenen Ansichten Teil der Ansichtshierarchie ist, sodass Ihre Ansicht heller ist.

Sehen Sie folgendes Beispiel: ViewStub nicht aufgeblasen: enter image description here

Nach Aufblasen: enter image description here

Natürlich kann man einen Kompromiss hier haben, wenn Sie VISIBLE (oder show()) eine aufpumpen gesetzt (nur auf dem ViewStub-Layout) passiert.

+0

dank Ihre Antwort. Ich habe diesen Artikel auch gefunden. Was passiert, wenn ich eine View und .addView() dynamisch entferne(). Es entfernt auch den Speicher beim Entfernen statt ViewStub zu verwenden. Ist es dasselbe oder nicht? – eralp

+0

Sie haben Recht, es entfernt die gesamte Ansicht aus dem Speicher. Das Problem besteht darin, dass das Hinzufügen und Entfernen einer Ansicht sehr aufwendig ist. Aus diesem Grund hat Google den ViewStub erstellt. Er ist leichter, weil Sie nur einen Teil der Ansichtshierarchie aufblähen, nicht alle. – Leonardo

+0

danke für alle. [Leonardo Ferrari] (https://stackoverflow.com/users/1232131/leonardo-ferrari) – eralp

0

ViewStub entspricht dem Hinzufügen von View im Hinblick auf die Leistung. Schauen Sie sich die ViewStub.inflate() an. Was es tut, ist das Hinzufügen von Ansichten dynamisch.

public View inflate() { ... final View view = factory.inflate(mLayoutResource, parent, false); ... parent.addView(view, index, layoutParams); } else { parent.addView(view, index); } ... return view; }

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewStub.java