Diese Woche habe ich an einer Universal Windows Platform App gearbeitet, die für mehrere Stunden am Stück eine Webseite innerhalb einer WebView anzeigt. Leider lief aufgrund eines Memory-Leaks der RAM nach wenigen Stunden so voll, dass die Geräte neu gestartet werden mussten.

Um den RAM freizugeben war mein erster Versuch, die Seite regelmäßig neu zu laden. Ein einfacher Refresh hat die ganze Sache allerdings nur verschlimmbessert. Versuch zwei funktioniert hier schon besser.

Statt die WebView im XAML anzulegen wird diese jetzt im Code-Behind erzeugt und konfiguriert. Dies ermöglicht es, das gesamte Control jederzeit zu entsorgen und neu zu instanziieren. Neu für mich war, das Databinding nicht via XAML sondern in C# anzulegen – nicht schwer, aber in XAML doch schöner. So sieht der Code dazu aus:

Um zu verhindern, dass die WebView bei der Benutzung neu geladen wird, wird der Reload über einen Timer gesteuert, der bei jeder Interaktion mit der App zurückgesetzt wird.