App ruft Speicherwarnungen ab und stürzt ab, wenn HTML-Dateien mit vielen YouTube-Videos in UIWebView geladen werden

8

Ich verwende eine UIWebView in meiner App. Es funktioniert normalerweise gut, aber es gibt eine Situation, in der die App eine Speicherwarnung erhält und schließlich abstürzt.

Ich lade den Inhalt mit diesem:

%Vor%

Es gibt einen Fall, in dem htmlString mehr als 25 YouTube-Videos enthält (das ist nicht meine Idee - es ist die Webseite, die ich empfange). In diesem Fall empfängt die App also einige Speicherwarnungen und stürzt schließlich ab.

Wie kann ich diese Situation bewältigen? Ist es möglich, die HTML-Datei in verschiedenen Schritten zu laden?

Ich weiß nicht, ob das etwas damit zu tun hat, aber ich setze die UIWebView size - und auch die Inhaltsgröße einer Scroll-Ansicht, die die Web-Ansicht umschließt - dynamisch. Dies ist der Code:

%Vor%

Vielen Dank

Carlos

    
Carlos 14.01.2013, 18:26
quelle

3 Antworten

3

Wie wäre es mit einem ungezogenen kleinen Trick? Holen Sie sich das HTML der Seite mit dem folgenden Code:

%Vor%

Verwenden Sie Regex, um Videoelemente zu finden, und ersetzen Sie sie durch Ihr benutzerdefiniertes Bild-Hyperlink-Tag & gt ;. Zeigen Sie die HTML-Zeichenfolge wie folgt an:

%Vor%     
Omar 22.01.2013 15:39
quelle
2

Harte Situation. Wenn Sie sicher sind, dass Ihr Code nicht die Ursache ist (verwenden Sie Instrumente, um nach Lecks zu suchen); dann ist Ihre nächste beste Wette vielleicht, den Absturz zu vermeiden. Ein paar Möglichkeiten kommen mir in den Sinn:

1) Wenn Sie die Speicherwarnung erhalten, könnten Sie möglicherweise:

%Vor%

2) Wenn das nicht funktioniert, können Sie möglicherweise return NO in UIWebViewDelegate webView:shouldStartLoadWithRequest:navigationType: nach einer Speicherwarnung beenden, um zu verhindern, dass die Seite weiterhin schwere Ressourcen einzieht.

3) Als letzten Ausweg stoppen Sie das Laden der Webansicht, entfernen Sie es aus Ihrer Ansicht und geben Sie es frei.

Hoffe einer von denen wird funktionieren. Kannst du die Seite teilen, die dich zum Absturz bringt? Klingt hilfreich für Testzwecke! Außerdem sollten Sie eine Datei mit Apple einreichen, falls Sie diese auf einer niedrigeren Ebene ansprechen möchten.

    
Dave 20.01.2013 17:04
quelle
0

Es scheint, dass 25 YouTube-Videos in einer einzelnen HTML-Seite zu viel sind: Speicher füllt sich und die App wird getötet.

Ich bezweifle, dass es viel zu tun gibt, wenn Sie nicht bereit sind, das Design Ihrer HTML-Seite zu ändern. Aber wenn Sie bereit sind, dann gibt es viele Möglichkeiten. Z. B. könnten Sie eine Lazy-Last des HTML (über Javascript) implementieren, so dass nur eine Handvoll von Videos jemals angezeigt wird (wie in einem UITableView). Oder Sie ersetzen den HTML-Code, der mit youtube verlinkt ist, durch einen anderen "leichteren" und laden Sie dann einen neuen UIWebView, um ein bestimmtes Video anzusehen. Etc.

    
sergio 14.01.2013 18:35
quelle