2015-12-05 6 views
29

Wir haben eine Hybrid-Android-Anwendung. Ich versuche, von einem WebView zu einem Native Kontext hin und her zu navigieren. Unter Verwendung chrome://inspect/#devices merke ich, dass mehrere Exemplare des Gerätes inspiziert sind detached, während einer von allen wäre attached wie in Chrom angezeigt. Mit Bezug auf SO-28254614, jetzt habe ich nicht die WebView entwickelt, aber zu was ich über unsere Anwendung wissen die WebView sind nicht mit Cordova entworfen und sind in JS. Die Frage, die ich habe, sind:Mehrere freistehende Webview-Instanzen in Chrome-Geräten beim Navigieren in Hybrid-Android-App

  • Warum ist es so, dass wir diese freistehenden Geräte auf Chrom sehen?
  • Könnte dies eine Möglichkeit eines Lecks in Android WebView sein?
  • EDIT 1: Ich freue mich auf etwas Hilfe. Habe auf dieser mehrfach Bounty gesammelt, aber nutzlos. Warte auf eine Lösung dafür.

    EDIT 2: Immer noch auf der Suche nach einer möglichen Antwort. Die aktuellen Antworten enthalten nicht genügend Details.

    +1

    Haben Sie beim Surfen im WebView Ihrer App einen Leistungseinbruch? Hier sind die Google Docs bezüglich Speicherlecks: https://developers.google.com/web/tools/chrome-devtools/profile/memory-problems/memory-diagnose Wahrscheinlich wird nicht helfen, aber das ist ein Regenschirm Bug für Eclipse in Bezug auf Probleme mit detached Web-Ansicht. https://bugs.eclipse.org/bugs/show_bug.cgi?id=276221 –

    +1

    @ElonZito Die Leistung von Webviews ist in Bezug auf den nativen Kontext vergleichsweise langsamer. Würde die Leistungskontrollen befolgen und den Bug im Auge behalten. – nullpointer

    Antwort

    4

    So ist die Art, wie diese Web-Inspektoren arbeiten, ist, dass sie die RemoteDebug Protocol verwenden.

    Dieses Protokoll definiert die verschiedenen Nachrichten und Befehle, die ausgetauscht werden, damit Sie Ihre Seiten "inspizieren" können.

    Eine Instanz des Inspectors kann immer nur eine Verbindung zu einem Client herstellen. Unter der Annahme, dass Sie zwischen Web-Views und nativem Kontext hin- und herwechseln, erzeugen Sie grundsätzlich neue Webviews für jeden neuen Kontextwechsel.

    Dies würde anzeigen, dass die zuvor geöffneten Webansichten nun "verwaist" und für alle praktischen Zwecke detached sind.

    Sie können versuchen, die VM darüber zu informieren, dass eine Webansicht nicht mehr verwendet wird, indem Sie in der Webansicht destroy() aufrufen, damit der Garbage Collector erkennt, dass er nicht mehr benötigt wird.

    Hoffen, dass dies ein tieferes Verständnis darüber gibt, was hinter den Kulissen passiert.

    +2

    Meine aktuelle App ist auch ein Hybrid, und diese Antwort ist direkt auf das Geld. Die von dir beschriebene Situation wird von Sunny perfekt zusammengefasst. Dies ist völlig normales Verhalten, soweit ich weiß, und ich würde sagen, die Antwort auf Ihre Frage _Kann dies eine Möglichkeit eines Lecks in Android WebView sein? _ Ist nein. – bhawkeswood

    +0

    @nullpointer Lassen Sie mich wissen, ob dies Ihrer Anfrage hilft. –

    Verwandte Themen