“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 將允許開發者創建新的酷炫應用。微軟可能會在不久的未來做出更大的改變,這顯然是令人欣喜的。雖然許多開發者目前正在被鼓勵開發通用應用,但相信未來他們將會變為主動出擊。