Проблема
У меня есть приложение в Xamarin.Forms, которое открывает WebView после экрана входа в систему.
Каждый раз, когда пользователь выходит из системы и снова, новые Page и ViewModelсоздал.
Проверка устройства через удаленные устройства Chrome. Я все еще вижу старые WebViews.
Для навигации я использую пользовательский NavigationService, созданный в приложении Evolve пару лет назад.
То, что я пробовал до сих пор
Удаление Страницы и ее ViewModel при открытии Страницы WebViews.
Это код, который открывает Страницу WebView и возвращает кСтраница входа
публичная асинхронная задача NavigateBackAsync (bool IgnoraNavegacao) {_isNavigating = true;
try
{
/* Omitted for clarity */
if (currentPage is IDisposable)
((IDisposable)currentPage).Dispose();
if (!(currentPage.GetType() == _homeViewModel))
{
await navigationPage.PopAsync();
}
}
finally
{
_isNavigating = false;
}
Утилизировать страницы, где браузер - это мой WebView, определенный в XAML:
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public virtual void Dispose(bool disposing)
{
if (disposing)
{
Browser = null;
var bindingContext = BindingContext as IDisposable;
bindingContext?.Dispose();
BindingContext = null;
}
}
И это Dispose ViewModel:
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
OnNavigatingCommand = null;
OnNavigatedCommand = null;
OnBackButtonPressedCommand = null;
}
}
И это то, что я вижу в Chrome после входа в систему четыре раза:
![Chrome Remote Device](https://i.stack.imgur.com/dRyKR.png)
Интересно, что в первый раз это «работает»: после того, как я выйду из системы и войду снова, в Chrome будет виден только один WebView.
Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация.
Будем весьма благодарны за любые указатели в правильном направлении.