如何处理应用程序在长时间暂停(未终止)后恢复的情况

How to handle scenario when application is resumed after long suspension (Without terminated)

本文关键字:终止 恢复 情况 暂停 何处理 处理 应用程序 长时间      更新时间:2023-09-26

我的应用程序显示它从web服务检索的数据。假设我的应用程序处于挂起模式,并在很长一段时间内保持挂起状态。之后,当这个应用程序恢复时,我想再次查询web服务,并在应用程序中显示更多最新数据。问题是,我不确定什么地方是处理这种情况的好地方。下面是代码的简化版本。在下面的示例中,当我使用Suspend和Terminate选项时,我会在控制台窗口中获得恢复,但当我只执行Suspend并在该resume之后,似乎不会调用任何函数。你知道我可能做错了什么吗?

app.addEventListener("resuming", function (vt) {
        console.log("resuming");
    });
    app.addEventListener("activated", function (args) {
        console.log("activated");
        if (args.detail.kind === activation.ActivationKind.launch) {
            if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
                console.log("new launch");
            } else {
                console.log("resume");
            }
        }
    });
    app.oncheckpoint = function (args) {
        console.log("suspended");
    };

假设变量"app"的定义是示例应用程序的标准:

    var app = WinJS.Application;

然后,根据MS文档,您不能将该变量用于"恢复"或"暂停"事件:

注意:无法使用此功能添加某些Windows应用商店应用程序事件的监听器,如"暂停"answers"恢复"。您必须改用Windows.UI.WebUI.WebUIApplication.addEventListener。

因此,正如医生所说,你需要使用:

Windows.UI.WebUI.WebUIApplication.addEventListener("suspending", suspending, false);
Windows.UI.WebUI.WebUIApplication.addEventListener("resuming", resuming, false);
Windows.UI.WebUI.WebUIApplication.addEventListener("resuming", function onresuming()
{
    Windows.UI.Popups.MessageDialog('hi i a resuming').showAsync();
});

请参阅此处的msdn页面。不幸的是,app.addEventListner('resuming', function() {})没有投掷。

这个msdn页面中的应用程序简历部分也可能很有用,它讨论了延迟简历的相同场景。