我有多個頁面的應用程序,與navigateto邏輯連接。UWP頁面生命週期
其中一個頁面包含具有網絡攝像機綁定的媒體元素。進入後臺模式(例如,通過最小化應用程序思考點擊系統菜單)後,攝像機元素停止。因此,我訂閱了
Windows.ApplicationModel.Core.CoreApplication.LeavingBackground事件並重新初始化相機。如果當前頁面是具有此訂閱和相機元素的頁面,則一切正常。如果當前頁面是另一個頁面,並且應用程序已恢復,則無論如何都會發生LeavingBackground此事件,因此隱藏頁面會嘗試重新初始化攝像機。
我試圖設置this.NavigationCacheMode = NavigationCacheMode.Disabled,因此包含媒體元素和訂閱LeavingBackground事件的頁面實例在理論上必須根據MSDN在NavigatedTo事件之後進行處理。但是,這是我不瞭解的另一種方式。
看來,相機頁面實例化一次,永遠,並將永遠收到LeavingBackgound事件 - 這對我來說很糟糕。
我試圖比較Window.Current.Content.GetType()與包含相機元素的頁面類型,但有時這種類型包含另一個頁面的類型,但有時它與Content.Content一起移動,所以我卡住了。
這是我嘗試過的解決方法之一,但我認爲這不是優雅和正確的。我仍然不明白爲什麼頁面不處理。 –
只要訂閱靜態事件(如LeavingBackground),您的頁面就不會被處置,因爲該靜態事件處理程序會在其上保留一個活動引用。你可以通過使用內存診斷工具來查看。 –
這不是我的頁面。這是你的設計,而不是優雅,真正的過於複雜。但我相信,你沒有努力改變這一點。 –