我必须在URL之间轮换(比如说10个URL)。每个网址都有自己的Web视图,每个Web视图显示15秒(一次)。我可以从服务器更改URL,然后立即显示在UWP应用程序上。
如果互联网不可用,则在间隔之后,WebView仍应在所有URL之间旋转,这就是我们使用多个WebView的原因。
目前的情况是,我更改的URL越多,占用的RAM越多,最终挂起。
答案 0 :(得分:0)
WebViews
是重量级控件,请不要创建多个实例来呈现html页面,在这种情况下,您可以使用计时器每15秒使用mvvm模式更改一个webview的源。即使互联网不可用,它仍然可以工作。请检查以下代码。
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}"
/>