上一主题是 移植 XAML 和 UI。
与设备本身及其传感器集成的代码涉及用户的输入和输出。 它还可能涉及处理数据。 但是,这段代码通常不被视为 UI 层 或数据层。 此代码包括与振动控制器、加速计、陀螺仪、麦克风和扬声器(与语音识别和合成相交)、(地理)位置和输入形式(如触摸、鼠标、键盘和笔)的集成。
应用程序生命周期(进程生存期管理)
对于通用 8.1 应用,从应用变为非活动状态到系统触发暂停事件之间有一个两秒的“防抖窗口”。 将此取消抖动窗口用作暂停状态的额外时间是不安全的,对于通用 Windows 平台(UWP)应用程序而言,根本不存在抖动窗口;一旦应用程序变得无效,就会立即引发挂起事件。
有关详细信息,请参阅 应用生命周期。
后台音频
对于 MediaElement.AudioCategory 属性,ForegroundOnlyMedia 和 BackgroundCapableMedia 在 Windows 10 应用中已被弃用。 请改用 Windows Phone 应用商店应用模型。 有关详细信息,请参阅 后台音频。
检测应用正在运行的平台
在 Windows 10 中,关于应用目标定位的思维方式发生了变化。 新的概念模型是应用面向通用 Windows 平台(UWP)并在所有 Windows 设备上运行。 然后,它可以选择点亮特定设备系列专属的功能。 如果需要,应用还可以选择将自身限制为专门面向一个或多个设备系列。 有关什么是设备系列以及如何确定要面向哪个设备系列的更多详细信息,请参阅 UWP 应用指南。
如果您的通用 8.1 应用程序中的代码用于检测其运行的操作系统,那么可能需要根据逻辑的目的来更改代码。 如果应用正在传递数值,而不是对其进行操作,那么您可能需要继续收集操作系统信息。
注意 建议不要使用操作系统或设备系列来检测功能是否存在。 确定当前操作系统或设备系列通常不是确定是否存在特定操作系统或设备系列功能的最佳方法。 测试功能本身是否存在(请参阅 条件编译和自适应代码),而不是检测操作系统或设备系列(以及版本号)。 如果必须要求特定的操作系统或设备系列,请确保将其用作受支持的最低版本,而不是设计该版本的测试。
若要根据不同的设备定制应用的 UI,我们建议使用几种技术。 继续像往常一样使用自动调整大小的元素和动态布局面板。 在 XAML 标记中,继续使用有效像素(以前称为视图像素)的大小,使 UI 能够适应不同的分辨率和缩放比例(请参阅 有效像素、观看距离和缩放比例)。 使用 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);
另请参阅 条件编译和自适应代码。
位置
当在其应用包清单中声明 Location 功能的应用在 Windows 10 上运行时,系统将提示最终用户同意。 无论应用是 Windows Phone 应用商店应用还是 Windows 10 应用,都是如此。 因此,如果你的应用程序显示自己的自定义同意提示,或者提供启用/禁用开关功能,那么你需要删除这些,以便最终用户只提示一次。