gpt4 book ai didi

c# - 如何在 Windows Phone 上优化带有图像的 longlistselector 的性能?

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:42 25 4
gpt4 key购买 nike

我有一个包含大约 10 个项目的数据透视表的页面,每个数据透视表项目包含一个长列表选择器,每个选择器包含 30 个项目。

每个 longlistselector 项目都包含一个图像。

当我浏览页面并翻到下一个枢轴项时,应用程序在第 4 个枢轴项处崩溃并出现内存异常。

有没有办法卸载longlistselector中未显示的图片?

最佳答案

我建议重新考虑您的应用程序布局,10 个枢轴项目对于普通用户导航来说有点太多了,为什么不在主页上添加一个包含“类别”的长列表选择器,然后是包含 30 张图片的详细信息页面。

但如果您绝对必须这样做,请查看 microsoft's photohub source

我个人正在使用它,在 panoramaItem 中加载数百张图像没有问题。

更好的是,如果您能负担得起时间,做一个内存配置文件并查看膨胀的确切位置,有时它可能是您应用程序的某些部分正在占用内存。

最后,wp 本身会自动缓存图片,但并不是每个人都喜欢这种方式(我相信你不喜欢)

看看这个:

图像缓存

这是一个重要的问题,MSDN 目前对此相当沉默。如果您想知道为什么在清除 Source 并从树中删除 Image 后您的图像内存没有被释放,您很可能看到了 Image 缓存在起作用。这是一个有意的性能优化,以避免一遍又一遍地(下载)加载和解码相同的图像。相反,我们在内存中保留一个缓存,以便我们可以轻松快速地重用。这不会与下载文件的浏览器缓存混淆。

虽然这是一个不错的免费性能优化,但有时它会不必要地消耗您的内存,尤其是当您循环浏览许多您永远不会回来的图像时。他们的缓存将在您的应用程序的生命周期内耗尽内存。好消息是,当您决定不再需要缓存时,您可以删除它:

BitmapImage bitmapImage = image.Source as BitmapImage;
bitmapImage.UriSource = null;
image.Source = null;

明智地处理这一点可以为您节省相当多的内存使用量,这是手机设备上的宝贵资源。在示例应用程序中,转到“缓存”页面并在显示/清除图像时监控内存使用情况。然后选中该框并重试。在示例案例中,您会看到大约 3MB 的差异。

您可以获得完整的文章here

关于c# - 如何在 Windows Phone 上优化带有图像的 longlistselector 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16341204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com