Перенос среда выполнения Windows 8.x в UWP для ввода-вывода, устройства и модели приложений
В предыдущем разделе был перенос XAML и пользовательского интерфейса.
Код, который интегрируется с самим устройством и его датчиками, включает входные данные и выходные данные пользователя. Она также может включать обработку данных. Но этот код обычно не считается слоем пользовательского интерфейса или уровнем данных. Этот код включает интеграцию с контроллером вибрации, акселерометром, гироскопом, микрофоном и динамиком (который пересекается с распознаванием речи и синтезом), (гео)расположение и модальность ввода, такие как сенсорный ввод, мышь, клавиатура и перо.
Жизненный цикл приложения (управление жизненным циклом процесса)
Для универсального приложения 8.1 между приложением 8.1 между приложением становится неактивным и система вызывает событие приостановки в два секунды. Использование этого окна отмены в качестве дополнительного времени для приостановки состояния небезопасно, и для приложения универсальная платформа Windows (UWP) не существует ни единого окна; событие приостановки возникает, как только приложение становится неактивным.
Дополнительные сведения см. в разделе "Жизненный цикл приложений".
Фоновый звук
Для свойства MediaElement.AudioCategory foregroundOnlyMedia и BackgroundCapableMedia не рекомендуется использовать для приложений Windows 10. Вместо этого используйте модель приложения Магазина Windows Phone. Дополнительные сведения см. в разделе "Фоновый звук".
Обнаружение платформы, на котором запущено приложение
С выходом ОС Windows 10 изменился подход к внесению изменений в приложения. Новая концептуальная модель заключается в том, что приложение предназначено для универсальная платформа Windows (UWP) и выполняется на всех устройствах Windows. Затем он может отказаться от освещения функций, которые являются эксклюзивными для определенных семейств устройств. При необходимости приложение также имеет возможность ограничить себя целевым для одного или нескольких семейств устройств, в частности. Дополнительные сведения о семействах устройств и способах выбора целевого семейства устройств см. в руководстве по приложениям UWP.
Если у вас есть код в приложении универсальной версии 8.1, которое определяет, в какой операционной системе она работает, может потребоваться изменить это в зависимости от причины логики. Если приложение передает значение, а не действует на нем, может потребоваться продолжить сбор сведений о операционной системе.
Обратите внимание , что для обнаружения наличия функций рекомендуется не использовать семейство операционных систем или устройств. Определение текущей операционной системы или семейства устройств обычно не является лучшим способом определить, присутствует ли определенная операционная система или семейство устройств. Вместо обнаружения семейства операционных систем или устройств (и номера версии), проверьте наличие самой функции (см . условный компиляция и адаптивный код). Если требуется определенная операционная система или семейство устройств, обязательно используйте ее как минимальную поддерживаемую версию, а не проектируйте тест для этой одной версии.
Чтобы настроить пользовательский интерфейс приложения на разных устройствах, рекомендуется использовать несколько методов. Продолжайте использовать элементы автомасштабирования и динамические панели макета, как всегда. В разметке XAML продолжайте использовать размеры в эффективных пикселях (прежнее название — пиксели), чтобы пользовательский интерфейс адаптировался к различным разрешениям и коэффициентам масштабирования (см . эффективные пиксели, расстояние просмотра и коэффициенты масштабирования). И используйте адаптивные триггеры и средства задания visual State Manager для адаптации пользовательского интерфейса к размеру окна (см . руководство по приложениям UWP).
Однако если у вас есть сценарий, в котором он неизбежен для обнаружения семейства устройств, это можно сделать. В этом примере мы используем класс AnalyticsVersionInfo для перехода на страницу, адаптированную для семейства мобильных устройств, где это необходимо, и мы обязательно вернемся к странице по умолчанию в противном случае.
if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
rootFrame.Navigate(typeof(MainPageMobile), e.Arguments);
else
rootFrame.Navigate(typeof(MainPage), e.Arguments);
Ваше приложение также может определить семейство устройств, на которое он работает, из факторов выбора ресурсов, которые в действительности. В приведенном ниже примере показано, как это императивно сделать, а в разделе ResourceContext.QualifierValues описывается более типичный вариант использования для класса при загрузке ресурсов семейства устройств на основе семейства устройств.
var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
string deviceFamilyName;
bool isDeviceFamilyNameKnown = qualifiers.TryGetValue("DeviceFamily", out deviceFamilyName);
Кроме того, см . раздел "Условная компиляция" и адаптивный код.
Расположение
Когда приложение, объявляющее возможность расположения в манифесте пакета приложения, запускается в Windows 10, система предложит пользователю предоставить согласие. Это верно, является ли приложение приложением Магазина Windows Phone или приложением Windows 10. Таким образом, если приложение отображает собственный настраиваемый запрос на согласие или если оно предоставляет переключатель для отключения, вы хотите удалить это так, чтобы конечный пользователь запрашивал только один раз.