通用應用程序的缺陷

閱讀時間圖標 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窗口

發表評論

您的電子郵件地址將不會被發表。 必填字段標 *