WP 7.1项目以托管Panorama控件的页面开头。在某些时候,用户单击ListBox,这会将应用程序导航到详细信息页面。
如果连接了调试器,所有内容都应该保留在屏幕上。但是,如果我在模拟器中或在没有调试器的手机上测试应用程序,大约在详细信息页面导航后的5-10秒内,应用程序将被停用。
没有无法解除的异常,没有关闭,但即使是被取消激活也是如此。我在每个“退出处理程序”中都放置了一个消息框,以确切知道发生了什么,并发现它已停用。
导航后和停用之前没有用户输入。
这种“无互动”停用的原因是什么?
我不会从代码中调用“停用”请求。
其他信息: 详细信息页面绑定到通过MVVM Light ViewModel定位器获取的示例视图模型。视图模型定位器从作为App对象的静态公共属性的ninject内核获取它(是的,我通过App属性公开了IOC容器。我知道这可能是一个可怕的做法,但我怀疑问题是链接到那个)。页面初始化很好,并显示示例视图模型类中的所有数据。几乎看起来应用程序由于不活动而被停用,但据我所知,WP7中没有这样的东西。
更新
在我调用此行之后,停用时间恰好为10秒:
((PhoneApplicationFrame)(Application.Current.RootVisual)).Navigate(new Uri("/Views/BookDetailsView.xaml", UriKind.Relative));
从主应用程序视图的视图模型。问题视图是详细信息视图,而不是主视图。
BookDetailsView的构造函数为空(默认值):
public partial class BookDetailsView : UserControl
{
public BookDetailsView()
{
InitializeComponent();
}
}
视图的XAML将它的datacontext绑定到mvvm光视图模型定位器的属性:
DataContext="{Binding Source={StaticResource Locator}, Path=BookDetails}"
Locator
资源在App.xaml中被删除,并指向ViewModelLocator.cs。
为问题视图提供datacontext的属性是:
public static IBookDetailsViewModel BookDetailsStatic
{
get;
set;
}
/// <summary>
/// Gets the Main property.
/// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public IBookDetailsViewModel BookDetails
{
get
{
return BookDetailsStatic;
}
}
BookDetailsStatic
是从ViewModelLocator ctor中的IoC容器调用初始化的:
BookDetailsStatic = App.Kernel.Get<IBookDetailsViewModel>();
在任何情况下,获取IBookDetailsViewModel的调用都会返回
的实例public class SampleBookDetailsViewModel: IBookDetailsViewModel
它有一个空构造函数和一堆属性。
解决 我一直在导航的观点被宣布为UserControl,应该是PhoneApplicationPage。
答案 0 :(得分:0)
很难说不知道页面上有什么,但你可能会达到内存限制。
一般情况下,您可以将内存限制视为90mb,但最好还是检查DeviceStatus.ApplicationMemoryUsageLimit和DeviceStatus.ApplicationCurrentMemoryUsage,并且可能每隔半秒左右在屏幕上显示一次以进行调试。
您也可以尝试使用探查器,假设它不会影响复制。
答案 1 :(得分:0)
BookDetailsView
被声明为UserControl
。
导航到UserControl
会在10秒内停用应用程序。
将视图类型更改为PhoneApplicationPage
可解决问题。