Webview verursacht ANR

8

Ich habe eine App geschrieben, die HTML-Seiten in Webviews anzeigt, die in einem ViewPager verwaltet werden. Alles funktioniert gut, aber ich habe ein paar ANRs gehabt, wenn ich von einer Seite zur anderen gewischt habe. Der ANR-Daten-Dump zeigt, dass der Haupt-Thread über ThreadedRenderer.nSyncAndDrawFrame () aufgerufen hat, der eine systemeigene Methode aufruft, die scheinbar mit dem Renderer-Thread kommuniziert und darauf wartet, dass dieser Thread das Zeichnen der Ansicht beendet. Da beide systemeigenen Code ausführen, ist es schwierig herauszufinden, was passiert, aber es scheint, dass der Renderer-Thread nie signalisiert hat, dass der Haupt-Thread fortgesetzt wird, was wiederum den ANR verursacht. Es gibt nichts im Logcat vor dem ANR-Bericht, das auf ein Problem hindeutet.

Hat jemand Vorschläge, wie Sie dies beheben können? Ich nehme an, dass der Aufruf von ThreadedRenderer.nSyncAndDrawFrame () mit dem Webview verknüpft ist, aber ich habe eigentlich nichts zu bestätigen.

Das Problem ist nicht wiederholbar, in dem Sinne, dass, wenn ich die App neu starte und zu derselben Seite navigiere, die beim Auftreten der ANR aufgetreten ist, passiert es nicht noch einmal. Gerät ist ein Nexus 7 mit Android 5.1.

ANR Stacktrace für Haupt- und Renderer-Threads:

%Vor%     
Clyde 14.06.2015, 11:28
quelle

3 Antworten

1

Ich habe auch mit diesem Problem konfrontiert Scheint, dass Chromium Bug, der mit dem neuesten Chromium Webview 43.0.23567.121 verwandt ist. Sie können versuchen, eine Webansicht in Ihrer App zurückzusetzen und sie erneut zu überprüfen. Für mich Problem reproduzierbar nur bei der neuesten Webview-Version.

    
Andrey T 23.07.2015 09:09
quelle
0
___ answer31582923 ___

Ich habe auch mit diesem Problem konfrontiert Scheint, dass Chromium Bug, der mit dem neuesten Chromium Webview 43.0.23567.121 verwandt ist. Sie können versuchen, eine Webansicht in Ihrer App zurückzusetzen und sie erneut zu überprüfen. Für mich Problem reproduzierbar nur bei der neuesten Webview-Version.

    
___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___ tag123androidwebview ___ Teil der Android-API. Eine Ansicht, die Webseiten anzeigt. Diese Klasse ist die Grundlage, auf der Sie Ihren eigenen Webbrowser rollen oder einfach einige Online-Inhalte in Ihrer Aktivität anzeigen können. ___ qstnhdr ___ Webview verursacht ANR ___ answer49397365 ___

Dies ist möglicherweise ein %code% und %code% Bug, siehe Ссылка

    
___ tag123androidanrdialog ___ Die Dialogmeldung "Anwendung reagiert nicht" ___ qstntxt ___

Ich habe eine App geschrieben, die HTML-Seiten in Webviews anzeigt, die in einem ViewPager verwaltet werden. Alles funktioniert gut, aber ich habe ein paar ANRs gehabt, wenn ich von einer Seite zur anderen gewischt habe. Der ANR-Daten-Dump zeigt, dass der Haupt-Thread über ThreadedRenderer.nSyncAndDrawFrame () aufgerufen hat, der eine systemeigene Methode aufruft, die scheinbar mit dem Renderer-Thread kommuniziert und darauf wartet, dass dieser Thread das Zeichnen der Ansicht beendet. Da beide systemeigenen Code ausführen, ist es schwierig herauszufinden, was passiert, aber es scheint, dass der Renderer-Thread nie signalisiert hat, dass der Haupt-Thread fortgesetzt wird, was wiederum den ANR verursacht. Es gibt nichts im Logcat vor dem ANR-Bericht, das auf ein Problem hindeutet.

Hat jemand Vorschläge, wie Sie dies beheben können? Ich nehme an, dass der Aufruf von ThreadedRenderer.nSyncAndDrawFrame () mit dem Webview verknüpft ist, aber ich habe eigentlich nichts zu bestätigen.

Das Problem ist nicht wiederholbar, in dem Sinne, dass, wenn ich die App neu starte und zu derselben Seite navigiere, die beim Auftreten der ANR aufgetreten ist, passiert es nicht noch einmal. Gerät ist ein Nexus 7 mit Android 5.1.

ANR Stacktrace für Haupt- und Renderer-Threads:

%Vor%     
___ antwort43841075 ___

Es könnte sich um einen Fehler in Android 7.0 WebView handeln, Sie können ihn auf zwei Arten beheben:

1, webView.setLayerType (View.LAYER_TYPE_SOFTWARE, null);

2, android: hardwareAccelerated="false"

    
___
hiphonezhu 08.05.2017 06:26
quelle
0

Dies ist möglicherweise ein driver und chromium Bug, siehe Ссылка

    
Cobain 21.03.2018 02:54
quelle