出于某种原因,当我重新启动PhoneGap应用程序时 - 它会丢失之前存储的 localStorage 值。我正在以正常的方式保存它们:
localStorage.setItem("foo","value");
这样存放就好了。但是,当您重新启动应用程序(或将设备关闭一段随机时间)时,它似乎会随机丢失数据。我发现了很多关于此事的帖子 - 但没有关于如何在PhoneGap Build WebView应用程序中保持持久性的明确答案,
欢迎任何建议!
这似乎是WebView应用程序的一个常见问题:
我找不到适用于PhoneGap Build应用的解决方案
我正在使用的一个实际例子是:
var current_id = parseInt(currentId) + 1;
localStorage.setItem("entry_"+current_id,save_string);
localStorage.setItem("entryId",current_id);
..然后提取它(不是这很重要,因为问题在于数据丢失,而不是访问它)
for (var i = 0; i < localStorage.length; i++){
if (localStorage.key(i).match("entry_")) {
outputString += "\n" + localStorage.getItem(localStorage.key(i));
}
}
我想知道是否可以从 PhoneGap Build cli-5.2.0 升级到 cli-6.0.0 。我会这样做,并给它一个旋转。
我想另一个选择是使用SQL数据库本地存储设备(设置起来有点棘手,意味着重写我的代码)
更新:不是理想的解决方案 - 但我现在已经将应用程序移到了应用程序的WebSQL上。得到它的悬念(以前从未使用它)有点棘手 - 但似乎做了这个工作,并且不应该丢失数据:)
答案 0 :(得分:0)
我尝试了这样,它起作用了:
var current_id = parseInt(currentId) + 1;
localStorage.setItem("entry_"+current_id,save_string);
localStorage.setItem("entryId",current_id);
/*
//this is for checking, what is stored in localStorage
console.log("length: " + localStorage.length);
for(var i = 0; i < localStorage.length; i++) {
console.log(localStorage.key(i));
}
*/
var myEntryIdFromStorage = localStorage.getItem("entryId");
var myItem = localStorage.getItem("entry_" + myEntryIdFromStorage);
&#13;
如何获得本地存储?
通常你应该像你一样存储物品:
var permanentStorage = window.localstorage;
permanentStorage.setItem("foo", "bar");
&#13;
通过以相同的方式初始化permanentStorage来取回它们:
//assuming you have permanentStorage in the same script file
//or else you have to initialize it again:
//var permanentStorage = window.localstorage;
var myItem = permanentStorage.getItem("foo");
console.log("myItem: " + myItem);
&#13;
方法商店项使用两个参数:标识符和数据本身。请检查您存储数据的标识符与您获取数据的标识符相同。
你有任何错误吗?返回(存储在myItem中的示例中)是null还是undefined还是只是一个空字符串?这在浏览器或设备上是否会失败?
您可以通过提供更多代码或错误消息来澄清您的问题!