Windows 8 应用程序开发人员博客

有关为 Windows 8 生成 Metro 风格应用程序的见解,来自 Windows 8 工程团队

April, 2012

  • Windows 8 应用程序开发人员博客

    调整限制性能提高的因素:Metro 风格应用程序中的常见性能问题

    • 2 Comments
    如果您抽空阅读了我此前所发布的博文,那么您应该对如何提高 Metro 风格应用程序的性能,以及如何利用现有的方法和工具来创建“快速而流畅”的应用程序有了一定的了解,接下来我想就我在众多应用程序中所见到的一些常见性能限制因素展开深入探讨。 本篇博文将向您介绍几大指导要点,我通过大量观察后发现,如果开发人员在使用 JavaScript 和 XAML 编写的 Metro 风格应用程序中遵循这些要点,那么其应用程序将获得显著改善,而且改善效果能得以量化。此外,我还将向您介绍 5 项具体的做法,我相信无论您使用哪种语言来编写应用程序,这些做法都将让您受益匪浅。而且这些做法无需您使用什么窍门或进行复杂的操作,因此对您而言,这将是一条利好消息。我相信只要您遵循这些指导要点,您便可大幅提高应用程序的性能。请在评论中告诉我这些指导要点为您提供了怎样的帮助,并与大家一同分享您的诀窍。 一般指导 依赖于打包的内容,而非网络内容。 相比网络中的图像和文件,您始终可更迅速地检索到本地的图像和文件。 如果您的应用程序需要加载一个“动态”的图像...
  • Windows 8 应用程序开发人员博客

    管理应用程序生命周期,让应用程序始终充满“生命活力”

    • 0 Comments
    Windows 8 中的应用程序生命周期模型意味着用户无需再管理哪些应用程序正在运行。它还使开发人员能够轻松打造当应用程序在后台运行时不会影响设备的电池电量或性能的出色用户体验。使用新的生命周期事件,用户将感觉您的应用程序始终处于运行状态,即使它在位于屏幕之外时从不运行。 如今,便携式计算机、平板电脑和手机上的电池电量经常不足,因为即使我们不使用应用程序,往往也会保持应用程序处于运行状态。我们这样做主要是为了方便使用和在应用程序之间实现快速切换。 为 Windows 8 中的 Metro 风格应用程序开发生命周期模型时我们牢记以下几个方面:保持应用程序响应能力、节省电池电量并提供出色且一致的性能。Metro 风格应用程序关键在于全屏沉浸式体验。因此,Windows 8 中新的生命周期模型重点关注前台应用程序,确保积极主动的用户体验并充分实现设备的全部价值。在本博文中,我将带您浏览生命周期模型的新状态以及为了使应用程序出色运行您需要做的工作。 Metro 风格应用程序的生命周期 在任意给定时间,您的 Metro 风格应用程序都处于以下四种生命周期状态之一: 未运行...
  • Windows 8 应用程序开发人员博客

    打造卓越的磁贴体验(第 1 部分)

    • 0 Comments
    动态磁贴是吸引用户重返您的应用程序的最佳方式之一。本篇博文将向您介绍应如何使用轮询和本地 API 来更新应用程序的动态磁贴,从而让您直接在 Windows 8 [Start](开始)屏幕上充分展示应用程序的出众之处。您可将应用程序内的最佳内容展现于磁贴的前方或中心位置。应用程序磁贴是应用程序中的核心部分,而且很可能也是用户最常见到的部分,因此请好好利用动态磁贴来吸引用户重返您的应用程序! 在本篇博文中,我将通过一个示例应用程序来向您介绍如何: 设计磁贴更新 选择与磁贴内容相匹配的模板 在应用程序未运行时,使用云中的轮询通知来更新磁贴 在应用程序运行时,使用包含于 SDK( Windows 8 SDK 应用程序磁贴和徽章示例 )中的 NotificationsExtensions 库以更新磁贴。 Contoso Food Trucks 应用程序简介 让我们一起来看一个示例应用程序:Contoso Food Trucks。该应用程序可让用户获取有关移动餐车的信息。我们在 Metro 风格应用程序网站的案例研究 一文中所展示的也是该款应用程序。在本篇博文中,我将向您展示如何向该应用程序添加动态磁贴...
  • Windows 8 应用程序开发人员博客

    打造卓越的磁贴体验(第 2 部分)

    • 0 Comments
    在 本篇博文的第 1 部分 中,我们已经了解了应如何设计磁贴更新,以及如何选择模板,从而让动态磁贴与您希望展现的内容相匹配。我们已经为应用程序设置了一个宽形默认磁贴,那么接下来让我们开始更新磁贴。现在,我们将直接深入探讨代码的问题。首先,我们将一同看看如何为 Contoso Food Trucks 应用程序磁贴设置轮询,其中包括我们 Web 服务代码的内容。然后,我们将为应用程序添加一个次级磁贴,并使用 Windows 8 SDK 应用程序磁贴与徽章示例 中所提供的 NotificationsExtension 库来更新磁贴。事不宜迟,让我们直奔主题! 选择通知的传递方式 既然我已经了解了我所希望获得的磁贴是什么模样(您可回顾本篇博文的第 1 部分以加深印象),那么接着我需要确定应何时更新这些磁贴。 更新应用程序磁贴共有 4 种方式(请参阅开发中心内 选择通知传递方式 一文)。应用程序可使用本地通知来更新其磁贴,这对于应用程序正在运行,且信息发生变更的情形十分有效。应用程序可在精确的时间点安排磁贴和 Toast 更新。此外,应用程序可在未运行时使用推送和轮询磁贴通知,进而从云端更新其磁贴...
  • Windows 8 应用程序开发人员博客

    最大程度地利用像素,适应视图状态的变更

    • 0 Comments
    在 Windows 8 中,您的应用程序将在各种屏幕尺寸和不同视图状态下运行。用户可能将应用程序分屏显示于 25 英寸的台式计算机显示器的一侧,也可能将其全屏显示于 10 英寸的宽屏平板设备。但是无论是哪种情形,您都希望您的应用程序能够充分利用可用空间。在本篇博文中,我将向您展示如何在代码中跟踪您应用程序的当前尺寸和视图状态,并为您提供一些有关在 Windows 8 Consumer Preview 中编写应用程序的技巧,从而让您轻松应对屏幕尺寸和视图状态的变更。 在 //build/ 大会上,我曾向您介绍了如何为不同的屏幕应用场景而设计应用程序(例如,请观看视频 XAML talk 或 HTML talk )。此外,最近我们也在 Building Windows 8 博客 中与您分享了一些有关屏幕缩放的研究内容和设计想法。通常情况下,您可使用纯标记来适应屏幕尺寸的变更,而无需编写显示代码。但有时您需要跟踪应用程序处于何种 视图状态 (即确定应用程序是处于纵向、全屏、填充抑或辅屏模式),并编写代码做出相应响应。例如,如果您正在使用一项 HTML ListView 来显示项目,那么您可能希望在全屏模式时使用...
  • Windows 8 应用程序开发人员博客

    深入探究 WinRT 和 await

    • 0 Comments
    在最近发布的 使用 Windows 运行时中异步性来始终保持应用程序能够快速流畅地运行 这篇博文中,包含了一些如何在 C# 和 Visual Basic 中使用 await 关键字的示例,允许开发人员在使用 WinRT 异步操作的同时,保持和推导良好的控制流。 在接下来的博文中,我将更加深入地介绍 await 在 WinRT 中的工作原理。这些知识将帮助您更轻松地推导使用 await 的代码,进而帮助您编写更出色的 Metro 风格应用程序。 首先,我们先来审视一下没有 await 的情况。 基础知识回顾 WinRT 中的所有异步功能全部源自同一个接口: IAsyncInfo 。 public interface IAsyncInfo { AsyncStatus Status { get ; } HResult ErrorCode { get ; } uint Id { get; } void Cancel(); void Close(); } WinRT 中的每个异步操作都需要实施此接口,该接口可提供执行异步操作所需的基本功能,查询其标识和状态,并请求其取消。但该特定接口缺少对异步操作来说无疑是至关重要的功能...
  • Windows 8 应用程序开发人员博客

    如何提高 Metro 风格应用程序的性能

    • 0 Comments
    速度慢或无响应的应用程序无法得到用户的青睐。用户希望应用程序能够立即响应触摸、点击、单击、手势和键击。用户还希望动画能够很流畅,他们能够快速地播放、暂停和重新开始他们的音乐和视频,并且他们永远不必等待应用程序赶上他们的节奏。本文是介绍如何使您的应用程序“快速且流畅”的系列博文中的开篇之作。 我们的工程团队投入了大量时间来思考如何才能确保 Metro 风格应用程序的性能。我们已了解到我们可以在平台中做些工作来交付快速、流畅的性能;同时我们还了解到在构建能够提供出色体验的应用程序时哪些工作起作用,哪些工作不起作用。在本博文中,我将与您分享一些我从自己的经验中吸取的沉痛教训,以便您可以为客户构建尽可能最佳的体验。 性能心理学 性能不仅仅是一个秒表和高效算法。当我想到性能时,我喜欢用全局的眼光来看,并考虑用户在使用应用程序时对时间的感觉。快速且流畅对应用程序意味着什么?思考这一问题的其中一种方法是将用户的体验分为三个类别:感知、容忍度和响应速度。 感知:这未免也太久了吧! 感知决定着快速且流畅中的“快速”。我们将用户对性能的感知定义为用户在多大程度上愿意回忆在您的应用程序中执行他们的任务所花的时间...
Page 1 of 1 (7 items)