【问题标题】:Accessing IndexedDB of a Javascript Metro App in a Background Task在后台任务中访问 Javascript Metro 应用程序的 IndexedDB
【发布时间】:2012-11-01 10:02:45
【问题描述】:

我正在尝试在 javascript 后台任务中从我的应用程序访问 indexeddb(以便我可以更新动态磁贴)。

我正在这样设置任务:

        var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
        builder.name = taskName;
        builder.taskEntryPoint = "js\\task\\backgroundTask.js";

        //Run every 8 hours if the device is on AC power
        var trigger = new Windows.ApplicationModel.Background.MaintenanceTrigger(480, false);
        builder.setTrigger(trigger);

        var task = builder.register();

任务如下所示:

(function () {
    "use strict";

    var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;
    var cancel = false;

    function doWork() {
        var key = null, settings = Windows.Storage.ApplicationData.current.localSettings;

        //todo access db and update tile

        close();
    }

    if (!cancel) {
        doWork();
    } else {
        close();
    }

    function onCanceled(cancelSender, cancelReason) {
        cancel = true;
    }

    backgroundTaskInstance.addEventListener("canceled", onCanceled);

})();

任务似乎运行良好,但我无法确定是否可以访问数据库(或任何应用程序资源)。这种事情甚至可能吗,如果是的话,我错过了什么?

【问题讨论】:

  • 如果您访问 indexeddb API 并尝试写入数据,会发生什么?

标签: windows-8 windows-runtime indexeddb


【解决方案1】:

根据http://msdn.microsoft.com/en-us/library/windows/apps/hh453270.aspx,商店应用程序中的 WorkerGlobalScope(在您处于后台任务时有效)使 indexedDB 可用。 IndexedDB 在本地 appdata 中工作,因此应该可以作为任何其他 appdata 操作使用。

一般来说,后台任务可以修改应用数据并发布磁贴/toast/徽章更新。正如 Slace 指出的那样,您无法访问其他应用程序资源,因此 appdata 是您与主应用程序共享数据的方式。

【讨论】:

    【解决方案2】:

    我认为后台任务在不同的线程上运行(因此它们没有相同的墓碑限制)并且无法访问应用程序资源。这就是即使在应用程序挂起时后台任务仍保持活动状态的方式,这意味着您无法访问应用程序资源。

    【讨论】:

      【解决方案3】:

      您可以在 worker 中使用 IndexedDB API,但您需要使用 sync API

      我在 Windows 8 开发工作人员方面的经验是,您不能在其中使用异步 API。进行异步调用时,不会调用提供的回调。同样正如 Kraig 所提到的,只能使用工作范围可访问的 API。 (你不能从 window 对象中调用任何东西。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-16
        相关资源
        最近更新 更多