快速構建Windows 8風格應用30-應用生命週期管理

BlogLogo

引言

 

Windows 8 中可以啓動多個應用並在其中切換,我們沒有必要擔心降低系統速度或消耗電池電量。 因爲系統會自動掛起(有時會終止)在後臺正在運行的應用。設計良好的應用可以由系統掛起、終止以及重新啓動,並且這些過程看起來該應用一直在運行中。

一、原理

2

1.當激活了應用時,無論任何原因,系統都會發送 Activated 事件

2.每當用戶切換到桌面或其他應用時,系統都會掛起你的應用,系統會發送Suspending事件

3.每當用戶切回到你的應用時,系統就會恢復你的應用,系統會發送Resuming事件

生命週期變化

當用戶啓動應用程序,該應用在生命週期中可以發生哪些變化呢?

3

1.運行的應用,可以進行掛起,變成掛起的應用

2.掛起的應用,可以進行恢復,變成運行的應用

3.掛起的應用,如果系統內存不足,將直接被幹掉

多應用在相互切換時的狀態變化

1.啓用App1

4

2.啓用App2後,App1將被掛起

5

3.啓用App3後,App2將被掛起,同理任何一個App後,之前的App將被掛起

6

7

4.當內存有限時,App1將會被終止掉,但是用戶不會得到任何通知

8

5.用戶啓用App2後,App2立即從掛起狀態恢復

9

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 方法。

10

掛起應用

1.每當用戶切換到桌面或其他應用時,系統都會掛起你的應用。每當用戶切回到你的應用時,系統就會恢復你的應用。當系統恢復你的應用時,你的變量和數據結構的內容與系統將你的應用掛起之前的內容相同。系統會將你的應用完全恢復到你離開時的狀態,使用戶感覺你的應用好像一直在後臺運行一樣。

2.當你的應用被掛起後,系統會嘗試將你的應用及其數據保留在內存中。但是,如果系統沒有資源將你的應用保存在內存裏,則將終止你的應用。當用戶切換回已終止的掛起應用時,該應用會發送 Activated 事件,且應該在其 OnLaunched 方法中還原其應用程序數據。

3.當終止應用時系統不會通知應用,因此當掛起應用時,你的應用必須保存其應用程序數據並釋放獨佔資源和文件句柄,並且當在終止後又激活應用時還原這些內容。

11

恢復應用

1.每當用戶切換到桌面或其他應用時,系統都會掛起你的應用。每當用戶切回到你的應用時,系統就會恢復你的應用。當系統恢復你的應用時,你的變量和數據結構的內容與系統將你的應用掛起之前的內容相同。系統會將你的應用完全恢復到你離開時的狀態,使用戶感覺你的應用好像一直在後臺運行一樣。但是,應用可能已掛起很長一段時間,因此,它應當刷新在應用掛起之後可能已發生更改的任何顯示內容(如新聞源或用戶位置)。

2.如果你的應用沒有任何需要刷新的顯示內容,則它無需處理 Resuming 事件。

12

三、最佳實踐

務必執行項

1.一般情況下,將應用恢復爲用戶離開該應用時的狀態,而不要重新啓動

2.如果自用戶上次訪問應用以來已經過很長一段時間,則重新啓動應用

3.當應用被掛起時保存應用程序數據

4.當掛起應用時釋放獨佔的資源和文件句柄

5.在應用被掛起後恢復應用時,如果其內容自用戶上次查看以來有所更改,則更新 UI

6.在應用被終止後恢復應用時,使用已保存的應用程序數據還原你的應用

7.如果無法預測用戶希望恢復還是重新啓動,則向他們提供選項

禁止事項

1.勿在應用移至屏幕外時終止應用

2.勿還原因崩潰而終止的應用的狀態

3.勿在應用的 UI 中爲用戶提供關閉或終止應用的方法

不同場景應該做哪些

13

 

相關參考資料:

1.管理應用生命週期和狀態(使用 C#/VB 和 XAML 的 Windows 應用商店應用)

2. 如何激活應用

3.如何掛起應用

4.如何恢復應用

5.應用程序生命週期(Windows 應用商店應用) (Windows);

6.應用的掛起和恢復指南(Windows 應用商店應用) (Windows)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章