Ich würde gerne wissen, wenn der Bildschirm auf iOS gezeichnet wird. Insbesondere würde ich gerne wissen, ob sichtbare Änderungen auf dem Bildschirm zu sehen sind. Dies kann nützlich sein, um beispielsweise zu ermitteln, wie lange eine Seite zum Rendern benötigt hat (vorausgesetzt, der Benutzer interagiert nicht mit der Seite). Ich würde gerne in der Lage sein, diese Informationen in einem normalen Produktions-Build und nicht in einem Entwickler-Build zu erfassen. Und ich möchte, dass dies eine allgemeine Lösung ist, die für die meisten Seiten in meiner App gilt, nicht nur für eine bestimmte Seite.Woher weiß ich, wenn der Bildschirm unter iOS gezeichnet wird?
Zum Beispiel habe ich eine Seite, die 1) asynchron eine API für Daten abfragt, 2) diese Daten in einem UITableView anzeigt, wo einige der Einträge nicht sichtbar sind, und dann 3) asynchron die Bilder für jede der Dateien herunterlädt sichtbare Elemente auf dem Bildschirm. Ich möchte Rückrufe erhalten, wenn das UITableView gerendert wird und wenn alle Bilder gerendert werden. Die Gesamtzeit zum Rendern der Seite kann bestimmt werden, indem der Zeitstempel des letzten Aufrufs des Rückrufs betrachtet wird (wiederum unter der Annahme, dass keine Benutzerinteraktion stattfindet).
Auf Android ist das ziemlich einfach. Sie können ViewTreeObserver.addPreDrawListener verwenden, um einen Rückruf zu erhalten, wenn der Bildschirm gezeichnet wird. Wenn auf dem Bildschirm keine Änderung sichtbar ist, wird der Rückruf nicht aufgerufen.
Auf iOS scheint CADisplayLink möglicherweise einen ähnlichen Zweck zu dienen. Wenn ich jedoch meinen CADisplayLink anschließe, scheint er immer und immer wieder "Over-and-Over" genannt zu werden, unabhängig davon, ob sichtbare Änderungen auf dem Bildschirm vorhanden sind oder nicht.
Gibt es eine Möglichkeit zu wissen, wann es sichtbare Änderungen am Bildschirm gibt, der in iOS gezeichnet wird?
Das Geschäft des asynchronen Füllens einer Tabellenansicht mit heruntergeladenem Material ist extrem üblich und gut gelöst (und hier auf SO gut erklärt). Ich sehe nicht genau, wofür Sie zusätzliche Informationen benötigen. Der Begriff "Gesamtzeit für das Rendern der Seite" ist sinnlos, da Zellen außerhalb des Bildschirms nicht vorhanden sind und nicht gerendert werden. – matt
Ich möchte einen Bericht erstellen, der den 50., 90. und 95. Perzentilwert angibt, wie lange Benutzer brauchen, um die Seite in der realen Welt zu laden, damit ich Daten erhalte, die mir helfen, die Seitenlade-Leistung der App zu optimieren . – emmby
Aber es ist nicht die _Zeichnung_, die Sie quantifizieren müssen, sondern die _Downloads_. Und das ist leicht gemacht. - Und bitte, nächstes Mal, stellen Sie die Frage, auf die Sie wirklich die Antwort wissen wollen. Sie erhalten bessere Hilfe und verschwenden weniger Zeit/Bandbreite. – matt