ich drei LinearLayout
Ansichten haben, wo ich einige meiner eigenen Ansichten wie die laden:Wie kann ich wissen, wenn mehrere Ansichten gerendert werden
linearLayout1.addView(view11);
linearLayout1.addView(view12);
linearLayout2.addView(view21);
linearLayout2.addView(view22);
linearLayout3.addView(view31);
linearLayout3.addView(view32);
Das Problem ist, dass, wenn ich viele Ansichten laden müssen (mehr als 30) Die Leistung sinkt. Konkret geschieht dies:
Ich beginne die Aktivität, die Aktivität wird gerendert, ich lade von der lokalen SQLite die erforderlichen Daten auf dem Bildschirm geladen und ich fange an, meine benutzerdefinierten Ansichten zu den linearen Layouts hinzuzufügen.
An diesem Punkt die App einfrieren und nach 2-3 Sekunden erscheinen alle meine benutzerdefinierten Ansichten alle zusammen.
Ich habe versucht, eine Log
innerhalb jeder benutzerdefinierten Ansicht onMeasure
und ich fand heraus, dass jede Ansicht tatsächlich fast zur gleichen Zeit (< 1ms Unterschied zwischen ihnen) bereit ist.
Ich bin auf der Suche nach einer Möglichkeit zu wissen, wann alles fertig ist und der Benutzer wieder mit der Benutzeroberfläche interagieren kann.
Speziell, ich möchte eine ProgressDialog
zeigen, wenn die Aktivität beginnt und ausblenden nach diesen 2-3 Sekunden, wenn der Bildschirm für den Benutzer bereit ist.
Irgendwelche Ideen?
Würde es auch die Gesamtleistung unterstützen, wenn ich meine LinearLayouts
durch ListViews
ersetze und benutzerdefinierte Adapter hinzufüge, um meine benutzerdefinierten Ansichten anstelle von addView
hinzuzufügen?
Ja! Verwenden Sie LinearLayout nicht einmal ScrollView zum Rendern mehrerer Ansichten. Verwenden Sie einfach eine einzelne ListView. –
@teckwei hätte das wirklich großen Einfluss auf die Leistung? sogar für viel mehr Ansichten (sagen wir 200)? – TheCrafter
Haben Sie Twitter-Feed, Facebook-Feed gesehen? Sie alle verwenden listView, selbst wenn Sie 1000 View haben, können sie es gut rendern, nur weil sie die Wiederverwendungstechnik verwenden. Es bedeutet, dass deine Ansicht nicht wirklich in der Erinnerung ist oder nicht existiert, wenn sie nicht sichtbar sind. Sie erstellen oder wiederverwenden, sobald Sie zum möglichen scrollen. Aber Sie haben viel mehr Arbeit, wenn Sie viel Unterschied Layout haben. –