1

我正在开发 Windows Phone 应用程序。在我的应用程序中,我使用 Longlistselector 并使用 MVVM 加载带有图像的长列表。同样在列表后的详细信息页面中,几乎没有高分辨率图像。

在我的应用程序中,我从第 1 页到第 2 页,从第 2 页到第 1 页 n 次。应用程序在返回导航时崩溃,给出 ArgumentOutOfRangeException 和 OutOfMemoryException。

我已经完成了 Windows phone 应用程序分析。它显示的 GC 事件被频繁调用。但是,它没有显示应用程序在什么时候崩溃以及如何减少或如何清理应用程序使用的内存。

如果有人知道内存清理以及如何防止内存泄漏,请告诉我。

4

2 回答 2

0

内存泄漏的最大问题是未释放事件处理程序。每当您订阅事件时,您还需要在不再需要更新时取消订阅该事件。我猜当您导航回第 1 页时,您的第 2 页实际上并没有消失。我相信有一对重载方法(我认为是 OnNavigatingTo 和 OnNavigatingFrom)可以帮助您管理此问题。

另一种方法是使用 Wea​​kReference 并使用 EventAggregator 手动传递任何数据。可能最容易使用的是MVVM Light Toolkit(Messenger)的一部分。此弱引用不会让您的事件发送者持有对您的订阅者的引用。

于 2013-06-16T10:44:37.313 回答
0

您还必须记住,windows phone 是一个新的范例。您不是从一个页面导航到另一个页面,而是导航到一个页面并返回到上一页。如果您一直在前进,您将在导航堆栈中拥有页面的新实例。

于 2013-06-27T22:21:30.500 回答