[Windows 8]生命週期事件處理-----應用暫停

[Windows 8]生命週期事件處理-----應用暫停

 

系統終止暫停應用時不會發出通知,因此在系統暫停應用之前

把必要的應用程序數據通過 suspending 事件處理方法保存起來

可以避免數據遺失,便於再次激活時還原應用

處理方法可以在應用初始化時註冊,像下面的程式碼這樣

public App()
{
    this.InitializeComponent();
    this.Suspending += new SuspendingEventHandler(OnSuspending);
}

上面的程式碼使用了SuspendingEventHandler事件處理器來暫停事件註冊處理方法OnSuspending

Windows 提供了Windows.Storage.ApplicationData 和 SuspensionManager 類別

用來幫助我們管理應用數據

Windows.Storage.ApplicationData 類別具有 LocalSettings 屬性

該屬性返回儲存數據的容器ApplicationDataContainer

透過使用 ApplicationDataContainer 可以儲存必要的應用數據到本地當中

SuspensionManager 是 "基本頁" 模板的幫助程式類別

可用來保存和還原窗口的導航狀態等多種操作

 

在暫停事件處理方法中使用這兩個類別可以儲存應用程式數據

上面註冊的 OnSuspending 方法就使用了 SuspensionManager 程式碼如下:

async protected void OnSuspending(object sender, SuspendingEventArgs arges)
{
    SuspendingDeferral deferral = arges.SuspendingOperation.GetDeferral();
    await SuspensionManager.SaveAsync();
    deferral.Complete();
}

為了確保數據儲存完全,程式碼中使用 SuspendingOperation.GetDeferral 方法申請暫停延遲

然後呼叫SuspensionManager.SaveAsync 方法保存應用的導航狀態

應用數據存除完成後,呼叫Complete方法結束延遲執行暫停