win8: Manage app lifecycle and state 管理生命周期和状态

Check:http://msdn.microsoft.com/en-us/library/windows/apps/hh986966.aspx

生命周期

如图所示,app只有三种状态,running、notRunning、Suspended(所谓的挂起,即在后台中)

 

管理的数据:app data and session data.

app data:应用数据,永久性数据。使用roamingSettings 时数据会上传到云上!!使用localSettings 就只能在本地保存。

session data:会话数据。临时数据,程序关闭后释放。

2种数据都建议是在数据变化时及时保存。

 

存储与还原数据:

app data:

存储:

        // Store the user's name for multiple sessions.
        var appDada = Windows.Storage.ApplicationData.current;
        var roamingSettings = appDada.roamingSettings;
        roamingSettings.values["username"] = nameInput.value;

“1、调用 Windows.Storage.ApplicationData.current 属性来获取应用的 ApplicationData 对象。

2、然后调用 ApplicationData 对象的 roamingSettings 属性来获取用于进行漫游设置的 ApplicationDataContainer。”

恢复数据:

无论应用在上次运行时是如何关闭的,我们都希望执行此代码(只需查看上次执行状态以获取会话数据),因此我们将该代码添加到用于检查应用上次执行状态的 if 子句外面。我们将它添加到 WinJS.UI.processAll 的 then 处理程序中,我们在这里注册我们的事件。

                // Restore the user name.
                var userName =
                    Windows.Storage.ApplicationData.current.roamingSettings.values["userName"];
                if (username) {
                    nameInput.value = userName;
                }

session data:

保存数据:

        // Save the session data. 
        WinJS.Application.sessionState.greetingOutput = greetingString;

恢复数据:

还原数据是在onactivated 中if(args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated )的else语句中

恢复。

                // Restore application state here.
                var outputvalue = WinJS.Application.sessionState.greetingOutput;

 

在“猥琐”中有模拟各种状态的选项:

 

end!

 

 


 

posted on 2012-09-21 12:22  老Zhan  阅读(513)  评论(0编辑  收藏  举报