但開發者對於 PhoneApplicationPage 的存活控制權很低…
就目前為止我還不知道如何使一個 Page 真的解構或得知一個 Page 何時解構…
簡單的將一個 PhoneApplicationPage 在產生到離開會引發的一些 Method 及事件…
Constructor
OnNavigatedTo
OnPageLoaded
OnNavigatingFrom
OnNavigatedFrom
OnPageUnloaded
Destructor
假設撰寫一個簡單的 App 主頁為 N 並可以開啟 P 頁…
N 與 P 頁的瀏灠過程與 Page 產生的流程整理如下…
App 啟動並開啟 N
N.Constructor
N.OnNavigatedTo
N.OnPageLoaded
N 透過 NavigationService 到 P
N.OnNavigatingFrom
P.Constructor
N.OnNavigatedFrom
P.OnNavigatedTo
N.OnPageUnloaded
P.OnPageLoaded
P 透過硬體 Back 鍵回到 N
P.OnNavigatingFrom
P.OnNavigatedFrom
N.OnNavigatedTo
P.OnPageUnloaded
N.OnPageLoaded
在 N 頁使用硬體 Windows 鍵回到 OS
N.OnNavigatingFrom
N.OnNavigatedFrom
OS 透過硬體 Back Key 回 N
N.OnNavigatedTo
N 透過硬體 Back 鍵離開 App
N.OnNavigatingFrom
N.OnNavigatedFrom
P.Destructor
N.Destructor
可以大致歸納出來一些放置流程的目標在哪…
一個簡單的例子…例如某頁在開啟時要做大量的工作…建議放在 OnPageLoad 裡面…
若放在 OnNavigationTo 會導致在該頁中斷回 OS 再 Back 時又觸發一次該工作…
而 Destructor 則是盡量不要放任何重要的流程…因為我們無法預期什麼時侯該物件會解構…
即時性很高的流程就非常適合放在 OnNavigationTo 中進行…
例如根據看到該頁的時間來決定背景是太陽還是月亮等等決策…
沒有留言:
張貼留言