通用应用程序的缺陷

阅读时间图标 4分钟读


读者帮助支持 MSpoweruser。如果您通过我们的链接购买,我们可能会获得佣金。 工具提示图标

阅读我们的披露页面,了解如何帮助 MSPoweruser 维持编辑团队 查看更多

微软已经开始鼓励开发者将他们的应用迁移到通用应用,但一些开发者仍然不相信。 不久前,我写了一篇社论,引用了开发人员关于通用应用程序的可行性以及为什么它们还没有让世界着火的原因。 今天,另一位开发者发表了一篇关于他使用通用应用程序的经验的文章(我们将在此处复制经许可)

 

Windows Phone 8.1 XAML 和通用应用程序包含有许多问题的 WinRT API,其中包括一些没有解决方案的问题。 但首先,让我们谈谈“通用应用程序”的名称。 我认为这是相当傲慢的,称通用的东西针对两个平台,坦率地说,没有那么多用户使用或关心。 此外,如果您只考虑 Windows 平台,这些应用程序也不是通用的,因为它们无法针对最常用的 Windows 版本(7 和 XP)。 但我离题了。

他在这里提出了这一点,这是我不久前提出的。 WP8.1 和 W8.1 都没有为开发人员提供足够的价值来开发它们中的任何一个,因为就像我说的“Windows 有用户,但这些用户不一定想要应用程序。 Windows Phone 用户想要应用程序,但数量并不多”。

然而,用户并不是阻止开发人员迁移到 8.1 WinPRT 应用程序的唯一因素。 还有技术问题:

 

更多混乱的 API

所以 Windows Phone 8.1 的背景音频播放 API 搞砸了,还有什么? 当然。 BackgroundDownloader 是另一个例子。 在 Silverlight 中,有一个非常有限的 BackgroundDownloader,但它确实有效。 在通用应用程序中,有一个新的 BackgroundDownloader,其中包含一些新功能,但缺少一些基本功能。 例如,在 Silverlight 中,每个下载都可以有一个标签,您可以在其中存储任何数据,以便在下载完成时了解有关下载的信息(下载属于哪个业务实体等)。 通用应用程序中不再存在。 没有标签,因此您必须为所有下载建立和管理您自己的索引,这样您才能真正将它们与您的业务实体相匹配。 一个烦恼,但没有什么是你无法管理的,对吧。

博客上的一位评论者还补充说,Camera api 不如 Silverlight 的,而且我被告知 8.1 api 缺少镜头集成。

WP8.1 上的相机 API 也非常糟糕。 没有办法获得预览帧。 使用 Silverlight API,您可以简单地订阅一个事件并通过 ZXing 以多个 fps 推送低分辨率帧。 在 WinRT 中,您可以做的最好的事情是拍摄多张照片,有时使用闪光灯并每秒扫描约 0.8 帧。

在 8.1 和 8.0 中,获得平滑滚动所需的工作量也有所增加,性能也会受到影响。

性能

在 Silverlight 中,我通常使用 LongListSelector 来显示数据,当我需要创建两列布局时将其与 WrapPanel 一起使用。 LongListSelector 消失了,在通用应用程序中,您还必须在 Windows Phone 上使用 GridView。 或者您可以将 ListView 与您自己编写或下载的自定义包装面板一起使用,但需要一些努力才能使其正确进行虚拟化。

因此,您在 Windows Phone 8.1 和 Windows 8.1 上都使用 GridView 以使其保持一致。 向其中添加数十个带有图像的项目,性能开始真正受到影响。 灰色占位符会出现,更重要的是, 永远不会消失. 您不需要图像,只需在 GridView 中添加大约 300 个纯文本项目,灰色占位符将在滚动时开始显示

这篇文章的重点不是要抨击微软,而是要解释为什么开发人员可能还不愿意创建通用应用程序。 它们并不是绝对更好的方法,它们在某些方面是升级,在其他方面是降级(Windows Phone 用户很清楚这种感觉)。 如果微软要吸引开发人员,他们需要比现在更快地工作,“很快”和“未来几个月”对那些靠“很快”成为“昨天”的人来说没有吸引力。 值得庆幸的是,有迹象表明这种情况可能正在改变。 WP 8.1.1 带来了一些新的 api(虽然受到限制),据说 8.1.2(在现在隐藏的帖子中)允许开发人员创建新的很棒的应用程序。 微软未来可能会发生变化,这很好。 然而,对于许多现在被迫制作通用应用程序的开发人员来说,未来还不能很快到来。

除了您在这里获得的片段之外,请阅读全文 此处. 对于我的更详细的作品,请参阅 点击此处。

有关主题的更多信息: 开发, 通用应用, 10窗口

发表评论

您的电邮地址不会被公开。 必填带 *