微软早前已经积极鼓励开发者们将开发方向迁移到通用应用上来,然而一些开发者并不情愿如此。日前,外媒WMP发表了一篇评论文章,针对一位通用应用开发人员的一段开发经历,评论了微软通用应用目前的开发现状。
“Windows Phone 8.1 XAML以及包含WinRT API的通用应用目前仍然存在许多问题,包括缺乏必要的解决方案等。然而首先最值得一提的就是“通用应用”这个名称,我认为这样命名似乎有些夸大,通用应用面向的是两个平台(Win/WP),但坦率地说其实并没有多少用户使用或关心这类应用。放眼Windows平台,这些通用应用目前还没有被广泛普及,因为它们并没有在最常用的Windows 7/XP版本系统上成为通用。
事实上,开发者提到的这一观点其实也是外媒WMP前段时间讨论过的问题。目前,无论是WP8.1还是Win8.1平台都没
有向开发者展示足够的价值去开发一款基于该两大平台的通用应用,毕竟“尽管Windows现在拥有庞大的用户群,但这些用户并不一定都需要应用。然而Windows Phone用户现在最缺的就是应用,但Windows Phone生态却没有可观的应用量供应。”
一、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项左右的纯文本内容,滚动的时候灰色占位符又开始出现。