“Windows Phone 8.1 XAML 以及包含 WinRT API 的通用应用目前仍然存在许多问题,包括缺乏必要的解决方案等。然而首先最值得一提的就是“通用应用”这个名称,我认为这样命名似乎有些夸大,通用应用面向的是两个平台(Win/WP),但坦率地说其实并没有多少用户使用或关心这类应用。放眼 Windows 平台,这些通用应用目前还没有被广泛普及,因为它们并没有在最常用的 Windows 7/XP 版本系统上成为通用。(我好像跑题了)”
事实上,开发者提到的这一观点其实也是外媒 WMP 前段时间讨论过的问题。目前,无论是 WP8.1 还是 Win 8.1 平台都没有向开发者展示足够的价值去开发一款基于该两大平台的通用应用,毕竟“尽管 Windows 现在拥有庞大的用户群,但这些用户并不一定都需要应用。然而 Windows Phone 用户现在最缺的就是应用,但 WP 生态却没有可观的应用量供应。”
然而,用户并不是唯一阻止开发者迁移到 8.1 Win RT 应用开发的因素,其中还存在技术上的问题:
API
“除了目前最遭受诟病的 Windows Phone 8.1 背景音频播放 API 之外,当然还不乏许多同样糟糕的例子,比如后台下载器(BackgroundDownloader)。在 Silverlight 插件方案中,后台下载器受到的限制很多,但最基本还可以工作。但在通用应用中,虽然后台下载器能够支持新功能,但一些基本的功能却都遗失了。举例来说,在 Silverlight 中每个下载可能都有一个标签,它可以存储任何数据,下载完成后你可以知道下了哪些东西(相关实体内容等)。但在通用应用中缺失的内容太多了,没有标签自不必说,你还得必须创建和管理所有下载内容的索引,以便匹配你的实体信息以便查询。虽然这只是小问题,但没有它你就无法管理,的确很麻烦。”
此外,通用应用平台上的相机 API 也不如 Silverlight,因为 8.1 API 缺乏镜头特性集成。
“目前在 WP8.1 相机 API 中没有帧预览,这一点令人愤慨不已。然而在 Silverlight API 中,你可以订阅事件,通过多帧率情况下的 ZXing 来改善低分辨率帧。但在 WinRT 上你能做的就是拍许多照片,而最好的情况就是支持闪光灯以及以约 0.8 帧每秒的速率扫描。(注:ZXing 是一个开源 Java 类库用于解析多种格式的 1D/2D 条形码。目标是能够对 QR 编码、Data Matrix、UPC 的 1D 条形码进行解码。Zxing 可以实现使用手机的内置的摄像头完成条形码的扫描及解码。)”
性能
“在 Silverlight 中,我常用 LongListSelector 显示数据,而当需要创建一个两列布局时我会一起使用内建面板 WrapPanel。但在通用应用中,LongListSelector 控件消失了,你必须使用网格视图(GridView),而在 Windows Phone 也是如此。或者你也可以使用 ListView 配合定制的包装列表视图面板(可以使你自己编写的或下载来的),不过需要做适当的虚拟化。”
因此在 Windows Phone 8.1 和 Windows 8.1 平台上使用 GridView 时需要保证一致。添加十几个带有图片的条目后性能便开始明显受到影响。灰色占位符就会出现而且最重要的是它总是不会消失。如果不附带图片,在 GridView 中增加 300 项左右的纯文本内容,滚动的时候灰色占位符又开始出现。
总结
最后,外媒总结了本次引文评论,表示撰写本文的目的并不是要攻击 微软 ,只是希望更加清楚的解释“为什么开发者目前仍然不愿意转向通用应用”。他们从亲身的实践经验中获知,这目前绝对还不是一个更好的方法,WP 更是深知在一些地方升级而在另外一些地方又降级的滋味。
如果微软真正想吸引开发者,他们需要比现在付诸更快的行动,而不是再用“很快”和“在未来几个月”这类官方辞来吸引这些以开发应用为生的开发者,因为他们不可能会把未来压在“很快”上。值得庆幸的是,目前诸多迹象正在表明这种糟糕的情况有可能会改变。WP 8.1 GDR1 带来了一些新的API(尽管受限),而且传闻 WP 8.1 GDR2 将允许开发者创建新的酷炫应用。微软可能会在不久的未来做出更大的改变,这显然是令人欣喜的。虽然许多开发者目前正在被鼓励开发通用应用,但相信未来他们将会变为主动出击。