Nie*_*els 7 c# windows-phone-8.1 win-universal-app
我有一个相当简单的问题,我无法回答我的问题.而Google和StackOverflow也没有提供任何结果:(.
我希望我的BitmapImage的DecodePixelHeight取决于设备的RAM量.如果设备有512 MB,则DecodePixelHeight应低于1GB和2GB.我这样做是因为我在处理内存问题时遇到了困难.
如何在Windows Phone 8.1(通用应用程序)上识别512 MB的低端设备?
亲切的问候,尼尔斯
小智 7
MS没有提供确切的方法来查找设备RAM的数量,但我自己找到了解决方案.我告诉你我根据设备RAM编写应用程序代码所做的工作.
private void deviceMemory()
{
var memoryLimit = Windows.System.MemoryManager.AppMemoryUsageLimit;
memoryLimit = (memoryLimit / 1024) / 1024;
Debug.WriteLine("Device Memory Limit: "+memoryLimit+"MB");
}
Run Code Online (Sandbox Code Playgroud)
这不是你所期待的,但拥有一些东西总比没有好.找到设备内存限制后,我可以轻松地编写应用程序代码.

以下是此页面的摘录
在开发应用程序时,您可以使用
ApplicationCurrentMemoryUsage和ApplicationPeakMemoryUsage属性来监视内存使用情况,并使用DeviceTotalMemory和ApplicationMemoryUsageLimit属性来确定设备和应用程序内存限制。没有必要以极小的间隔检查应用程序的内存使用情况。偶尔检查一下峰值内存使用情况就足够了。如果您发现内存使用峰值超过了允许的阈值(如 Windows Phone 技术认证要求 5.2 节所述),您可以选择更精细地监控内存使用情况,以帮助诊断问题。
具体来说,该DeviceTotalMemory属性应该允许您根据设备的 RAM 有条件地执行某些任务。
考虑到其用途,这ApplicationMemoryUsageLimit可能更合适,但请注意,它返回的值永远不会是 512MB 或 1GB,但在 512MB 设备上,它会比 1GB 设备低得多,您可以将其用于此目的。
MSDN 上的DeviceStatus文档也可能提供对此主题的更多见解。
var deviceTotalMemory = Microsoft.Phone.Info.DeviceStatus.DeviceTotalMemory;
var memoryUsageLimit = Microsoft.Phone.Info.DeviceStatus.ApplicationMemoryUsageLimit;
Run Code Online (Sandbox Code Playgroud)