Мне было интересно, есть ли способ обнулить контексты привязки всех моделей просмотра, а затем собрать мусор при выходе из системы? В моем приложении
async void OnLogoutClicked(object sender, EventArgs args)
{
try
{
var result = await UserLogoutRequest.Logout();
if (result.responseCode == ResponseCodes.SUCCESS)
{
DialogService.ShowSuccessToast("Logout successful");
}
else
{
DialogService.ShowErrorToast("A server error occurred during logout");
}
}
catch (Exception ex)
{
DialogService.ShowErrorToast("A client error occurred during logout");
}
finally
{
await DataManager.Instance.SetLoggedInUser(null);
await DataManager.Instance.SetToken(string.Empty);
GC.Collect(); // TODO: Figure out how to GC the ViewModels so that when user logs in again it's not using the same instance of the VM
await AppShell.Current.GoToAsync("//Welcome");
}
}
}
G C .Collect (), похоже, мало что делает, поскольку страницы все еще связаны с их моделями просмотра. Думаю, я мог бы использовать BindingContext = null в OnDisappearing страниц, но мне кажется, что OnDisappearing вызывается слишком часто. Я бы предпочел просто обнулить BindingContext всех страниц при выходе из системы, а затем собрать мусор, но, похоже, у меня нет никакого крючка для этого.
Заранее спасибо.