Windows 8 中可以啟動多個應用並在其中切換,我們沒有必要擔心降低系統速 度或消耗電池電量。 因為系統會自動掛起(有時會終止)在後台正在運行的應用。設計良好的應用可 以由系統掛起、終止以及重新啟動,並且這些過程看起來該應用一直在運行中。
一、原理
1.當激活了應用時,無論任何原因,系統都會發送 Activated 事件
2.每當用戶切換到桌面 或其他應用時,系統都會掛起你的應用,系統會發送Suspending事件
3.每當用戶切回到你的應 用時,系統就會恢復你的應用,系統會發送Resuming事件
生命周期變化
當用戶啟動應用 程序,該應用在生命周期中可以發生哪些變化呢?
1.運行的應用,可以進行掛起,變成掛起的應用
2.掛起的應用,可以進行恢復,變成運行的 應用
3.掛起的應用,如果系統內存不足,將直接被干掉
多應用在相互切換時的狀態變化
1.啟用App1
2.啟用App2後,App1將被掛起
3.啟用App3後,App2將被掛起,同理任何一個App後,之前的App將被掛起
4.當內存有限時,App1將會被終止掉,但是用戶不會得到任何通知
5.用戶啟用App2後,App2立即從掛起狀態恢復
Activated介紹
1.當激活應用時會觸發Activated 事件
2.Windows.UI.Xaml.Application 類定義了為處理各種不同的激活類型而可以替代的一些方法 ,例如:OnActivated和OnLaunched
3.應用應該加載其保存的應用程序數據並刷新其顯示的內容
Suspend介紹
1.系統資源專注在於用戶交互的前台應用上
2.掛起的應用不會消耗 任何CPU、磁盤和網絡資源
3.不活動的應用對電池沒有任何影響,它們是由系統掛起
4. 應用之間能夠快速切換
5.掛起的應用會保存在內存中
6.掛起應用中的所有線程都被掛起
Terminated介紹
1.系統需要更多內存觸發
2.用戶切換觸發
3.用戶關閉應 用觸發
4.系統關機觸發
5.應用崩潰觸發
6.在終止應用期間,沒有事件被觸發… 你應該在應用掛起時保存所有信息
二、實現
激活應用
當激活了應用時,無論任 何原因,系統都會發送 Activated 事件。有關激活類型的列表,可以參閱 ActivationKind 枚舉。
Windows.UI.Xaml.Application 類定義了為處理各種不同的激活類型而可以替代的一些方法。
對於其中一些激活類型,有特定的方法可以替代。對於其他激活類型,則替代 OnActivated 方 法。
掛起應用
1.每當用戶切換到桌面或其他應用時,系統都會掛起你的應用。每當用戶切回到你 的應用時,系統就會恢復你的應用。當系統恢復你的應用時,你的變量和數據結構的內容與系統將你的 應用掛起之前的內容相同。系統會將你的應用完全恢復到你離開時的狀態,使用戶感覺你的應用好像一 直在後台運行一樣。
2.當你的應用被掛起後,系統會嘗試將你的應用及其數據保留在內存中。 但是,如果系統沒有資源將你的應用保存在內存裡,則將終止你的應用。當用戶切換回已終止的掛起應 用時,該應用會發送 Activated 事件,且應該在其 OnLaunched 方法中還原其應用程序數據。
3.當終止應用時系統不會通知應用,因此當掛起應用時,你的應用必須保存其應用程序數據並 釋放獨占資源和文件句柄,並且當在終止後又激活應用時還原這些內容。
恢復應用
1.每當用戶切換到桌面或其他應用時,系統都會掛起你的應用。每當用戶切回到你 的應用時,系統就會恢復你的應用。當系統恢復你的應用時,你的變量和數據結構的內容與系統將你的 應用掛起之前的內容相同。系統會將你的應用完全恢復到你離開時的狀態,使用戶感覺你的應用好像一 直在後台運行一樣。但是,應用可能已掛起很長一段時間,因此,它應當刷新在應用掛起之後可能已發 生更改的任何顯示內容(如新聞源或用戶位置)。
2.如果你的應用沒有任何需要刷新的顯示內 容,則它無需處理 Resuming 事件。
三、最佳實踐
務必執行項
1.一般情況下,將應用恢復為用戶離開該應用時的狀態, 而不要重新啟動
2.如果自用戶上次訪問應用以來已經過很長一段時間,則重新啟動應用
3.當應用被掛起時保存應用程序數據
4.當掛起應用時釋放獨占的資源和文件句柄
5.在應用被掛起後恢復應用時,如果其內容自用戶上次查看以來有所更改,則更新 UI
6.在應用被終止後恢復應用時,使用已保存的應用程序數據還原你的應用
7.如果無法 預測用戶希望恢復還是重新啟動,則向他們提供選項
禁止事項
1.勿在應用移至屏幕外時 終止應用
2.勿還原因崩潰而終止的應用的狀態
3.勿在應用的 UI 中為用戶提供關閉或終 止應用的方法
不同場景應該做哪些