【问题标题】:What is the recommended way to persist the data in background task? [UWP/W/WP apps]在后台任务中持久保存数据的推荐方法是什么? [UWP/W/WP 应用]
【发布时间】:2015-12-11 20:07:17
【问题描述】:

这个问题很简单,但是我真的找不到任何示例可以证明我正在努力实现的目标,也许是我没有了解 uwp 应用程序(或 windows / Windows 手机 8)。

我正在创建一个正在轮询一些数据(交通事故)的应用程序,并且希望能够通知用户关闭的数据,即使他没有使用该应用程序。所以我想我会使用后台任务。 (我希望我做对了那部分)。

因此,在后台任务中,我设置为在 15 分钟的计时器上运行,在“InternetAvailable”的条件下,我异步获取数据,一旦完成,我将根据需要完成延迟对象.一切正常。

问题是,我应该使用什么对象来保存数据,以便在打开应用程序后读取数据?

我已经尝试过 WinJS.Application.sessionState 但是一旦应用程序准备好(打开)就会丢失。

我已经尝试过 Windows.Storage.ApplicationData.current.localSettings 但它说存在类型不匹配,显然我正在尝试将对象放入其中,如果需要字符串(我认为)...

那么有谁知道这里的最佳做法是什么?

谢谢

【问题讨论】:

    标签: javascript windows-phone-8.1 winjs uwp


    【解决方案1】:

    您拥有对 WinRT API 的完全访问权限,因此您可以写入文件(并在打开应用程序后读取相同的文件):

    function saveData(dataObj) {
        var applicationData = Windows.Storage.ApplicationData.current;
        var localFolder = applicationData.localFolder;
        return localFolder.createFileAsync("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (sampleFile) {
                return Windows.Storage.FileIO.writeTextAsync(sampleFile, JSON.stringify(dataObj));
        });
    }
    

    【讨论】:

    • 谢谢。虽然我知道所有选项 (msdn.microsoft.com/en-us/library/windows/apps/hh781225.aspx),但我想知道与我类似的应用程序的最佳实践是什么。我暂时将你的答案标记为答案
    • 顺便说一句,它应该是 JSON.stringify(data) 而不是 JSON.parse。
    • 你没有可用的localStorage吗?对于带有字符串值的键值对?
    • @TKoL 是的,本地存储可用
    • @belzebu,因为 localStorage 可用,除非您需要存储大量信息,否则我建议您这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多