Ich spiele ein Video in einem WebView
.
Wenn ein Speicherleck vermieden werden soll, muss der ApplicationContext
(gegenüber einem Activity
-Kontext) verwendet werden, um WebView
( lesen Sie hierzu )
Wenn ich die ApplicationContext
und die VideoView
innerhalb der WebView
übergebe, um einen Dialog zu erstellen (normalerweise für 'Kann dieses Video nicht abspielen'), bekomme ich BadTokenException
( beziehen Sie sich darauf )
Wird von uns erwartet, dass wir uns zwischen einem Speicherleck oder einem potentiellen ANR entscheiden?
Ich schließe aus obigen Kommentaren und weiteren Tests, dass das Problem ein Fehler im SDK ist: Beim Erstellen eines WebView über XML-Layout wird die Aktivität als Kontext für das WebView übergeben, nicht als Anwendungskontext. Wenn die Aktivität beendet wird, behält das WebView weiterhin Verweise auf die Aktivität, daher wird die Aktivität nicht aus dem Speicher entfernt. Ich habe dafür einen Fehlerbericht eingereicht, siehe den Link im obigen Kommentar.
%Vor%Dies ist definitiv ein Fehler, oder das Api-Design ist wirklich schlecht, es gibt keinen Hinweis auf den Fehler. Ich glaube, viele Entwickler haben dieses Problem gelöst.
Tags und Links memory-leaks android webview