当我从调用堆栈中删除视图时,如何处理我的视图模型的清理

时间:2012-03-21 06:39:45

标签: windows-phone-7 windows-phone-7.1

在我的应用程序中,我从Windows手机应用程序中的backstack条目中删除了一些视图。我的问题是,在删除视图时,与该视图对应的视图模型不会破坏。

我已经通过backkeypress事件写了清理。但在这种情况下,从后台堆栈中删除视图时,此代码块将不会执行。因此,如果我们浏览黑白页面3-4次,内存将增加,应用程序将崩溃。我该如何处理这种情况?

1 个答案:

答案 0 :(得分:1)

这个问题告诉我的是,代码中的某个位置存储了对视图模型的引用。例如,您是否使用工厂模型从模型构建视图模型?如果是这样,当您的视图被销毁时,视图模型将会停留,因为工厂可能仍然具有对视图模型的引用。

我建议你做以下事情:

  • 仔细查看您的代码,特别是在创建视图模型的每个地方,或绑定到模型,或存储在数组中等。

  • 如果您发现代码存储了除视图之外的视图模型的引用,那么当用户离开视图所在的页面时,请确保添加代码以清除该引用。< / p>

一旦您的应用中没有引用视图模型的对象,手机将自动处理您的视图模型,释放内存。

但是,我会说,如果您使用的内存足以导致应用程序崩溃,因为视图模型没有被销毁,您可能需要在项目结束时查看一些性能优化。大多数应用程序中的视图模型不应该导致这种内存使用,除非应用程序使用了很长时间(视图模型不应该在3-4页的过程中,占用的内存超过应用程序分配的90MB内存)。

希望有所帮助!如果您仍然卡住,请尝试(如果可以)发布一些示例代码。