如何在Windows Phone 8.1(通用)中获取设备的RAM(512 mb,1GB,2GB)?

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)

这不是你所期待的,但拥有一些东西总比没有好.找到设备内存限制后,我可以轻松地编写应用程序代码.

内存上限表


Jos*_*rer 2

以下是此页面的摘录

在开发应用程序时,您可以使用ApplicationCurrentMemoryUsageApplicationPeakMemoryUsage属性来监视内存使用情况,并使用DeviceTotalMemoryApplicationMemoryUsageLimit属性来确定设备和应用程序内存限制。没有必要以极小的间隔检查应用程序的内存使用情况。偶尔检查一下峰值内存使用情况就足够了。如果您发现内存使用峰值超过了允许的阈值(如 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)