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

时间:2014-08-15 21:33:01

标签: c# windows-phone-8.1 win-universal-app

我有一个相当简单的问题,我无法回答自己的问题...... Google和StackOverflow也没有提供任何结果:(。

我希望我的BitmapImage的DecodePixelHeight取决于设备的RAM量。如果设备有512 MB,则DecodePixelHeight应低于1GB和2GB。我之所以这样做,是因为我在解决记忆问题上挣扎。

如何在Windows Phone 8.1(通用应用程序)上识别512 MB的低端设备?

亲切的问候, 尼尔斯

3 个答案:

答案 0 :(得分:7)

MS没有提供确切的方法来查找设备RAM的数量,但我自己找到了解决方案。我告诉你我根据设备RAM编写应用程序代码的做法。

private void deviceMemory()
    {
        var memoryLimit = Windows.System.MemoryManager.AppMemoryUsageLimit;
        memoryLimit = (memoryLimit / 1024) / 1024;
        Debug.WriteLine("Device Memory Limit: "+memoryLimit+"MB");
    }

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

Memory caps table

答案 1 :(得分:2)

以下摘自this page

  

在开发应用时,您可以使用 ApplicationCurrentMemoryUsage ApplicationPeakMemoryUsage 属性来监控内存使用情况,以及 { {1}} DeviceTotalMemory 属性可确定设备和应用内存限制。没有必要以极小的间隔检查应用程序的内存使用情况。偶尔检查峰值内存使用情况就足够了。如果您发现峰值内存使用量值超过允许的阈值(如Windows Phone技术认证要求的第5.2节中所述),您可以选择更精细地监视内存使用情况,以帮助诊断问题。

具体来说,DeviceTotalMemory属性应该允许您根据设备的RAM有条件地执行某些任务。

ApplicationMemoryUsageLimit考虑​​其目的可能更合适,但请注意它返回的值永远不会是512MB或1GB,但在512MB设备上,它将低于1GB设备,您可以将其用于此目的。

MSDN上DeviceStatus的文档也可以提供有关此主题的更多信息。

ApplicationMemoryUsageLimit

答案 2 :(得分:0)

在MSDN上查看这篇文章

Developing apps for lower-memory phones for Windows Phone 8

其中一个主题与应用程序内存限制(由操作系统分配)有关。我认为这是你应该更担心的价值,不一定是设备的物理内存。

  

检查设备的应用内存限制

     

使用Windows Phone SDK 8.0或Windows Phone SDK 7.1.1更新,您可以   检查托管您应用的设备的内存工作集限制   然后,如果您知道它们不是,您可以禁用应用程序的某些功能   支持或内存密集型。检查内存工作集   限制,您调用GetValue(String)方法并传递   ApplicationWorkingSetLimit用于propertyName参数。该   以下代码显示了如何执行此操作。 C#

// Place call in a try block in case the user 
// is not running a version of the Windows Phone OS 
// that supports this method call.
try
{
  long result =  
    (long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
}
catch (ArgumentOutOfRangeException)
{
  // The device does not support querying for this value. This occurs
  // on Windows Phone OS 7.1 and older phones without OS updates.
}

有一个表格显示内存限制应该如何与设备的物理内存相关。

另外,请看一下这篇文章:App memory limits for Windows Phone 8