Window phone 8 app耗尽内存

时间:2014-08-03 15:17:58

标签: c# wpf mvvm caliburn.micro

我已经阅读了很多与此问题相关的不同帖子。但无法解决我的问题。

我似乎应该处理的页面没有释放他们的内存,并且所有用户控件和其中的UI项目都没有被删除。 我尝试取消订阅所有事件处理程序并使用弱引用。但似乎没有任何效果。

我正在使用caliburn微MVVM框架。

工作流程:

1登录

2个新预订屏幕

带有8个轴的PivotView

在第8个支点,我打电话给服务

3确认屏幕

有4个平底锅的全景

从第一个用户可以选择修改预订。

4修改屏幕(新预订)

这次第8个支点不同,其中包含提交按钮。

提交转到确认屏幕后。

5确认屏幕

在按下后,我拨打GoHome

6个新预订屏幕

当我提交应用程序崩溃时,我在前7个枢轴和8日提供信息。

当我尝试对这个应用程序进行分析时,我发现很多UI元素如Grid with destry time infinity都没有被删除。

回家功能

 public void GoHome()
        {
            _dataProvider.PauseService(cancelTokenSource);
            if (_applicationState.OldReservation != null)
            {
                _applicationState.OldReservation = null;
            }

            if (_applicationState.AppToken != null && _applicationState.AppToken.TokenState == Constants.TOKENSTATUS_ANONYMOUS)
            {
                _applicationState.AppToken.Profile = null;
                _applicationState.CurrentReservation = new Reservation();
            }
            else
            {
            }
            GC.Collect();
            while (_navigationService.BackStack != null
                   && _navigationService.BackStack.Count() > 0
                   && _navigationService.BackStack.Any((entry) => entry.Source.ToString().EndsWith("/MainPageView.xaml"))
                   && !_navigationService.BackStack.First().Source.ToString().EndsWith("/MainPageView.xaml"))
            {
                _navigationService.RemoveBackEntry();
            }
            if (_navigationService.BackStack.First().Source.ToString().EndsWith("/MainPageView.xaml"))
            {
                _navigationService.RemoveBackEntry();
            }
            _navigationService.Navigate(new Uri("/Views/MainPage/MainPageView.xaml", UriKind.Relative));
        }

0 个答案:

没有答案