Определение устройств WP7 с малым объемом оперативной памяти

Любые мобильные приложения ограничены в ресурсах. Поэтому производителю мобильных ОС приходится заботиться о том, чтобы приложения корректно исполнялись во всех конфигурациях. Одним из таких ограничений является ограничение в 90Мб используемой оперативной памяти для устройств с ОЗУ 256 Мб (Technical Certification Requirements - 5.2.5 Memory Consumption). Здесь я покажу как определить объем ОЗУ у текущего устройства.

Как следует из описания этого требования, приложение не должно потреблять больше 90Мб оперативной памяти; это требование не распространяется на устройства, имеющие больше 256Мб ОЗУ.

An application must not exceed 90 MB of RAM usage, except on devices that have more than 256 MB of memory.

Становится понятно, что в случае, если устройство менее малый объем памяти нужно как-то ограничить аппетиты приложения, например, выключить дополнительную анимацию, графику и другие ресурсы, потребляющие ОЗУ, но не влияющие на функциональности. Безусловно, в этом случае пользователь может получить менее красивое приложение, но зато оно хотя бы будет работать.

Для определения этой информации следует использовать объект DeviceStatus (для WP 7.0 следует использовать объект DeviceExtendedProperties). Этот объект содержит свойство DeviceTotalMemory, которое содержит общий объем ОЗУ устройства. Сравнивая это значение с пороговым можно определить с каким именно устройством мы имеем дело:

public static class MemoryExtensions
{
  public static bool IsLowMemoryDevice(this Application app)
  {
    return Microsoft.Phone.Info.DeviceStatus.DeviceTotalMemory <= 256*1024;
  }
}