如何从Windows 8 Phone应用程序的缓存中删除图像

本文关键字:缓存 删除 图像 应用程序 Phone Windows | 更新日期: 2024-10-20 15:20:53

从我所读到的内容来看,无论何时通过其Source属性将图像分配给XAML元素,都会进行某种智能缓存。

不幸的是,对于我的应用程序(闪存卡),我正在动态切换图像。每次用户在他/她面前轻弹(又称刷卡)时,Source属性。它是同一个XAML元素,但每次都会替换它的Source属性。

我有4套闪存卡,如果我一次最多选择3套,应用程序会保持良好状态,但如果我在第52张或第54张左右选择4套,则内存使用量会超过150MB(这是设置的限制),我的测试设备(诺基亚Lumia 520)会因内存不足而崩溃。

在分析了应用程序之后,我确定了图像加载事件引起的问题。

有什么想法吗?

如何从Windows 8 Phone应用程序的缓存中删除图像

根据我的经验,在处理图像时,取消不再需要的东西会很有帮助。

考虑到你使用的是BitmapImage,每次都会创建一个新的,我会尝试将位图图像UriSource设置为空

bmpImage.UriSource = null;

在使BitmapImage本身无效之前

bmpImage = null;

在创建的BitmapImage对象超出范围之前,以及在创建新对象并将其指定给Image作为源之前。(当然)

如果你使用多个Image对象,我也会将它们的Source设置为null。(例如,在代码隐藏等中创建一些复杂的图像覆盖时)

这对我使用BitmapImages有很大帮助,尤其是在后台任务中。