Android WebViewClient Rückrufe genannt zu oft
Wenn ich rufe WebView#loadUrl
ich erwarte, dass ich nur einen einzigen WebViewClient#onPageFinished
rufen und keine WebViewClient#shouldOverrideUrlLoading
nennen. Allerdings bekomme ich eine WebViewClient#shouldOverrideUrlLoading
(die ich implementieren, indem Sie immer ruft WebView#loadUrl und "true" zurückgeben) und dann zwei WebViewClient#onPageFinished
Aufrufe mit gleichen URL.
Der Seite, die ich bin laden verwendet eine Menge von ajax-Anfragen. Tun Sie ajax-Anfragen aufrufen, die WebViewClient
? Meine Seite hat keine meta-aktualisiert.
Ist, ist das ziemlich frustrierend. Mache ich etwas falsch?
InformationsquelleAutor Heath Borders | 2011-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein cross-post von einer google groups-Diskussion, die ich begonnen, auf das Thema.
Ich habe mehr Forschung, und ich denke, ich verstehe alles, was Los ist.
Hier ist mein
WebViewClient
:Habe ich folgende URL-Weiterleitungen von meinem server:
Diese URLs sind Teil eines Servers, dass ich nicht die Kontrolle, so dass ich nur zu tun haben mit dem Verhalten.
Hier ist die Ausgabe aus dem laden
http://example.com/resource
zu diesem Punkt, mein
WebView
hat leeren content. Ich muss warten, bis nach dem zweitenonPageFinished
zu schnappen Sie meine Inhalte.Hier ist die Ausgabe aus dem laden
http://example.com/logout.jsp
wieder, an dieser Stelle, meine
WebView
hat eine leere Seite. Muss ich warten bis die 3.onPageFinished
um meine Inhalte von derWebView
.Basiert auf der Dokumentation, ich erwarte nicht, dass dieses Verhalten. Beachten Sie, dass es eine unausgewogene Anzahl von
onPageStarted
s undonPageFinished
s. Ich vor allem nicht mögen, wieonPageFinished
wird aufgerufen, mit meiner Weiterleitung die URL, aber dieWebView
nicht enthalten, meinen Inhalt. Ich verstehe, dass dieses Verhalten wahrscheinlich unveränderlich, aber dieses unerwartete Verhalten sollte zumindest dokumentiert werden.Hi, was ist Ihre Lösung? thx
InformationsquelleAutor Heath Borders
Brauchen Sie nicht explizit zu nennen webView.loadUrl(url). Durch das überschreiben true zurückgegeben wird, erhalten Sie automatisch Ihre bestehenden webview, die Handhabung der neuen Seite zu laden. Durch unnötige aufrufen, es startet eine BRANDNEUE Zyklus der Webseite laden auf, dass die webView in die Mitte des ursprünglichen Zyklen (onPageStarted -> onPageFinished) daher extra Zyklus der callback ausgelöst, insgesamt.
WebView
's Verhalten hat sich verändert in den Jahren, seit ich gepostet. Es werde wahrscheinlich eine Weile beofr ich kann bestätigen, dass diese korrekt ist.InformationsquelleAutor Sinkeat