Приложение UWP зависает при использовании нескольких веб-просмотров с тяжелыми URL - PullRequest
0 голосов
/ 25 февраля 2020

Мне нужно переключаться между URL (скажем, 10 URL). Каждый URL имеет свой собственный веб-просмотр, и каждый веб-просмотр показывается в течение 15 секунд (по одному за раз). Я могу изменить URL-адреса с сервера, и это сразу же отобразится в приложении UWP.

Если значение inte rnet отсутствует, веб-представления должны по-прежнему вращаться между всеми URL-адресами после интервала, поэтому мы используем несколько веб-просмотров.

В настоящее время ситуация такова, что чем больше URL я меняю, тем больше оперативной памяти занимает и в итоге зависает.

1 Ответ

0 голосов
/ 26 февраля 2020

WebViews - это тяжеловесный элемент управления, пожалуйста, не создавайте несколько экземпляров для отображения страницы html, для этого сценария вы можете использовать таймер для изменения источника одного веб-просмотра с шаблоном mvvm для каждых 15 с. Даже если inte rnet отсутствует, он все равно будет работать. Пожалуйста, проверьте следующий код.

public sealed partial class MainPage : Page, INotifyPropertyChanged
{
    public MainPage()
    {
        this.InitializeComponent();
        initUri();
        var timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(15);
        timer.Tick += Timer_Tick;
        timer.Start();
        Source = new Uri("xxxxxx");

    }
    private List<Uri> _uris = new List<Uri>();
    private void initUri()
    {

        _uris.Add(new Uri("xxxxxx"));
        _uris.Add(new Uri("xxxxxx"));
        _uris.Add(new Uri("xxxxxx"));       

    }

    int count = 0;
    private void Timer_Tick(object sender, object e)
    {

        Source = _uris[count];
        count++;
        if (count == _uris.Count)
        {
            count = 0;
        }
    }



    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
    private Uri _source;
    public Uri Source
    {
        get
        {
            return _source;
        }

        set
        {
            _source = value;
            OnPropertyChanged();
        }
    }
}

Xaml

<WebView
    x:Name="MyWebView"
    HorizontalAlignment="Stretch"
    VerticalAlignment="Stretch"
    Source="{x:Bind Source, Mode=OneWay}"
    />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...