Was ist der Unterschied zwischen .remove() .addView() und ViewStub verwenden? Wie verbessert ViewStub die Effizienz des Layouts?Entfernen oder Hinzufügen von Ansichten vs ViewStub
Antwort
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:
Natürlich kann man einen Kompromiss hier haben, wenn Sie VISIBLE (oder show()) eine aufpumpen gesetzt (nur auf dem ViewStub-Layout) passiert.
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; }
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
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
danke für alle. [Leonardo Ferrari] (https://stackoverflow.com/users/1232131/leonardo-ferrari) – eralp