我的应用程序是一个使用cordova构建的Angular SPA,可在Android设备上运行 . 对于数据访问和缓存我正在使用BreezeJS . 这一切都挂在一起好了 .

问题是将数据保存到设备,以便在用户关闭应用程序时,他们可以再次以与离开时相同的状态打开它 . 这涉及将数据从breeze缓存保存到设备并恢复它 .

我正在挂起“暂停”事件,以检测应用程序何时关闭,然后将数据保存到设备 . 只要应用程序进入后台,就会发生这种情况 .

document.addEventListener("pause", quitCordova, false);

问题是如果用户最小化然后关闭,但立即打开应用程序(重复几次)然后我认为恢复发生在尚未完全保存但损坏数据的文件上 .

在再次读取文件之前,您似乎无法延迟确保保存已实际完成 .

下面是如何保存数据:

var fs = CordovaPromiseFS({
                persistent: true, // or false
                storageSize: 90857600,
              });

fs.write(myKey, myData).then(successFunction).catch(failureFunction);

CordovaPromiseFS是文件系统的包装器,详情请点击此处https://github.com/markmarijnissen/cordova-promise-fs