HoloLens使用Universal Windows Platform (UWP)提供的應用模型。UWP應用模型定義了應用如何被安全和徹底地安裝、更新、版本控制和移除。它管理了應用生命週期 - 應用如何被執行、休眠和中斷 - 以及如何保留應用狀態。它也覆蓋了和操做系統、文件以及其餘應用的集成和交互。git
全息應用的生命週期涉及到了標準應用的概念,例如放置。啓動、中斷和移除。web
每個應用都經過放置應用磁貼在HoloLens shell中啓動。這些應用磁鐵,在放置的時候,就將開始運行應用。這些應用磁貼會持久化的停留在它們被放置的位置,任什麼時候候你均可以從它們返回應用。shell
一旦完成放置(除非放置是由應用間啓動喚起的),應用開始啓動。HoloLens應用同一時刻能夠運行一個應用。一旦你放置和啓動了一個應用,任何其餘激活的應用都會被掛起,在你放置它的地方,應用磁貼上會留下一個它最後狀態的截圖。閱讀標準生命週期的文章來了解更多關於處理恢復和其餘生命週期事件的方法。windows
當你從世界中移除一個放置好的應用磁貼,這閉合了基礎的流程。這對於確保你的應用被終止或者重啓一個有問題的應用多是有用的。api
使用HoloLens,用戶可以爲一個應用建立多個啓動入口。它們經過從開始菜單啓動你的應用,並將應用磁貼放置在世界中來作到這點。每個應用磁貼都表現爲不一樣的啓動入口,在系統中都具備一個單獨的磁貼實例。SecondaryTile.FindAllAsync() 查詢的隊列將能夠列出全部應用的二級磁貼。安全
當一個UWP應用暫停時,應用當前狀態的屏幕截圖被獲取。app
與其餘Windows 10平臺的關鍵區別是經過CoreApplication.Resuming和CoreApplication.Activated事件,應用如何被通知它的一個實例被激活。async
狀況 | 恢復 | 激活 |
從開始菜單啓動一個應用新實例 | 使用一個新的TileId激活應用 | |
從開始菜單啓動第二個應用實例 | 使用一個新的TileId激活應用 | |
選中當前未激活的應用實例 | 使用實例關聯的TileId激活應用 | |
選中一個不一樣的應用,而後選中先前激活的實例 | 恢復被觸發 | |
選中一個不一樣的應用,而後選中先前未激活的實例 | 恢復被觸發 | 而後使用實例關聯的TileId激活應用 |
有時你的應用須要繼續在後臺作一些工做或者播放聲音。Background tasks 在Windows Holographic裏是可使用的,可是有一些限制。ide
當你的應用激活時,你能夠選擇顯示哪一種類型的視圖。對一個應用CoreApplication來講,總存在一個初始的應用視圖(app view)和任意數量的其餘你想建立的次級視圖。對於桌面環境,你能夠認爲一個應用視圖就是一個窗口。咱們的全息應用項目模板將會建立一個初始視圖是全息視圖的Unity項目。你的應用可使用像Xaml這樣的技術來建立額外的2D視圖來使用應用內購買之類的shell控件。若是你的應用以通用應用形式啓動,那麼初始視圖會是2D的,可是你能夠經過添加一個額外的全息視圖來提高在HoloLens的體驗。想象一下,咱們用XAML構建了一個圖片查看器,裏面有個視圖切換按鈕,能夠一鍵切換到全息視圖,在全息視圖中,來自應用的照片飛到世界和物體表面上。ui
全息視圖是指那些經過HolographicSpace 類型建立了全息視圖的應用。
任何非全息視圖的在你的世界中都會被渲染成2D視圖.
使用二級磁貼(Secondary Tile) API你能夠放置任意數量你想要的2D視圖。這些被放置的磁貼將會以閃屏的形式出現,用以來以後啓動你的應用。Windows Holographic當前不支持渲染任何2D磁貼做爲動態磁貼。在二級磁貼API(Secondary tile APIs)頁面你能夠了解到更多信息。
若是用戶使用了XAML,而後XAML IFrameworkViewSource將會控制應用的首個視圖。應用須要在激活CoreWindow以前切換到全息視圖,以保證應用直接進入全息體驗。
使用CoreApplication::CreateNewView 和 ApplicationViewSwitcher::SwitchAsync 來實現視圖的切換。
注意:
在視圖間反覆切換一般是爲了在全息應用顯示一個鍵盤。若是你的應用顯示了一個2D視圖,shell只可以顯示系統鍵盤。若是你的應用須要獲取文本輸入源,而後他們會寫一個帶有文本輸入框的自定義XAML視圖,它能在切換到它後,輸入完成後再切換回去。
上述所說情形,可使用ApplicationViewSwitcher::SwitchAsync 從你的全息視圖切換回XAML視圖。
2D應用視圖老是出如今一個固定的可視面板中。這使得全部2D視圖顯示同等數量的內容。下面是關於2D應用視圖大小的進一步細節:
開始菜單使用了標準小號和中號磁貼用於pin視圖和全部應用視圖。
當你構建應用時,Windows 10上你能夠得到豐富的應用間通訊機制。即便HoloLens目前不支持最新的應用協議啓動(app service protocol launches),可是許多新的協議API和文件註冊機制在HoloLens上可以確保應用間啓動和通訊。
HoloLens經過Windows.System.Launcher APIs 支持應用間啓動。
當啓動其餘應用時,如下內容要被考慮:
HoloLens支持FileOpenPicker 和 FileSavePicker 合約。儘管沒有支持文件選取合約的應用被預裝,可是你能夠從Windows Store下載它們 - 例如OneDrive。
若是你安裝了多個文件選取應用,你將不會看到任何有歧義的UI,這些UI一般是用來選取啓動哪一個應用。取而代之的是,首個安裝的文件選取器將會被選中。保存文件時,會自動生成包括時間戳的文件名。用戶不能改變文件愛大家。
默認狀況下,如下是本地支持的文件拓展格式:
應用合約和拓展入口容許你註冊你的應用來使用更底層的操做系統特性,例如處理文件拓展或者使用後臺任務。下面是Windows Holographic支持的合約和拓展入口列表。這與它支持的API集合不一樣。
全部的存儲都是經過Windows.Storage命名空間實現。閱讀下面的內容來了解更多細節。HoloLens不支持應用存儲同步/漫遊。
查看KnownFolders 來了解更多UWP應用使用KnownFolders的細節。
Property 屬性 |
Supported on HoloLens Development Edition HoloLens開發板是否支持 |
Description 描述 |
---|---|---|
AppCaptures | Yes | Gets the App Captures folder. 獲取應用捕獲文件夾 |
CameraRoll | Yes | Gets the Camera Roll folder. 相機文件夾 |
DocumentsLibrary | Yes | Gets the Documents library. The Documents library is not intended for general use. 文檔庫 |
MusicLibrary | Yes | Gets the Music library. 音樂庫 |
Objects3D | Yes | Gets the Objects 3D folder. 3D對象文件夾 |
PicturesLibrary | Yes | Gets the Pictures library. 圖片庫 |
Playlists | Yes | Gets the play lists folder. 播放列表文件夾 |
SavedPictures | Yes | Gets the Saved Pictures folder. 保存的圖片文件夾 |
VideosLibrary | Yes | Gets the Videos library. 視頻庫 |
HomeGroup | No | Gets the HomeGroup folder. 家庭組文件夾 |
MediaServerDevices | No | Gets the folder of media server (Digital Living Network Alliance (DLNA)) devices. 媒體設備文件夾 |
RecordedCalls | No | Gets the recorded calls folder. 電話錄音文件夾 |
RemovableDevices | No | Gets the removable devices folder. 可移動設備文件夾 |
使用Windows10,你再也不須要以操做系統爲目標可是取而代之的是,你須要以一個或多個設備家族來做爲目標(target your app to one or more device families)。一個設備家族定義了此家族中全部設備均可應用的API、系統字符集和行爲集合。它也決定了你的應用從應用商店中能安裝到哪系列的設備。
翻譯自:https://developer.microsoft.com/en-us/windows/holographic/app_model#App_views