0

使用此代码,我正在创建新视图:

CoreApplicationView newView = CoreApplication.CreateNewView();
int newViewId = 0;
await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        Frame frame = new Frame();
        frame.Navigate(typeof(SecondaryPage), null);
        Window.Current.Content = frame;
        // You have to activate the window in order to show it later.
        Window.Current.Activate();

        newViewId = ApplicationView.GetForCurrentView().Id;
    });
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);

当我关闭那个新窗口并再次运行代码时,我再次关闭那个新窗口并再次打开另一个窗口,窗口中的内存使用量越来越大......所以,我认为所有窗口都没有关闭,但是实际上只是隐藏了...

所以,我正在尝试两种方法:

  1. 尝试真正“杀死”关闭的窗口
  2. 尝试重新显示隐藏窗口并使其内容不同...

我只希望只有 2 个窗口,主窗口和这个新创建的窗口......关于如何做到这一点的任何建议?

编辑:

这是我使用此示例时的样子https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MultipleViews

这是这个应用程序的 3 个屏幕截图。

这是应用程序启动时的内存消耗:

这是在我添加 4 个视图之后:

这是我打开和关闭它们的时候:

因此,即使在他们的示例中,内存使用量也在上升......

4

1 回答 1

1

当您关闭一个窗口时,它会保存在最近使用的窗口列表中,以防再次需要它。如果您知道不再需要它(或想要/需要回收内存),您可以在该视图上调用事件Window.Current.Close();后通过调用来关闭它。ApplicationView.Consolidated

“buildingapps”博客上的这篇文章对此进行了描述。UWP 示例存储库中
还有一个(相当复杂的 IMO)示例。

于 2017-03-15T19:41:43.450 回答