【问题标题】:localStorage doesn't persist when the app is quit from memory (Phonegap)当应用程序从内存中退出时,localStorage 不会持续存在 (Phonegap)
【发布时间】:2019-03-07 17:06:40
【问题描述】:

我似乎对 localStorage 和 Phonegap 有疑问。据我了解,无论该应用程序是否在内存中,移动 safari 都应该保留本地存储。出于某种原因,当我从内存中清除我的应用程序并重新启动它时,本地存储缓存消失了(我可以确认它实际上是在设置数据)。

有什么想法吗?


编辑:想通了。 这根本不是 localStorage 的问题。当应用退出时,商店确实持续存在。问题是由于Phonegap 网络回调发生 jQuery 的文档准备好之后。

这就是我修复它的方法:

function onDeviceReady() {
  navigator.network.isReachable("google.com", reachableCallback, {});
}

// Check network status
function reachableCallback(reachability) {
  // There is no consistency on the format of reachability
  var networkState = reachability.code || reachability;

  var states = {};
  states[NetworkStatus.NOT_REACHABLE]                      = 'No network connection';
  states[NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK] = 'Carrier data connection';
  states[NetworkStatus.REACHABLE_VIA_WIFI_NETWORK]         = 'WiFi connection';

  if (networkState != 0) online = true;
}
////////// Checking navigator.onLine before document ready is key ///////////
var online = navigator.onLine || false;

$(document).ready(function() {  
  $(document).bind('deviceready', function(){
    onDeviceReady()
  })
})

【问题讨论】:

  • 您能否编辑您的帖子以将答案放入实际答案中?
  • 从 iOS 5.1 开始,localStorage 可能不是持久的。如果您的空间不足,您的 localStorage 可能会被操作系统清除。

标签: cordova local-storage


【解决方案1】:

我只是抄袭真实答案,全部来自@nic aitch

想通了。这根本不是 localStorage 的问题。当应用程序退出时,商店确实存在。问题是由于在 jQuery 的文档准备好之后发生的 Phonegap 网络回调。

这是我修复它的方法:

function onDeviceReady() {
  navigator.network.isReachable("google.com", reachableCallback, {});
}

// Check network status
function reachableCallback(reachability) {
  // There is no consistency on the format of reachability
  var networkState = reachability.code || reachability;

  var states = {};
  states[NetworkStatus.NOT_REACHABLE]                      = 'No network connection';
  states[NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK] = 'Carrier data connection';
  states[NetworkStatus.REACHABLE_VIA_WIFI_NETWORK]         = 'WiFi connection';

  if (networkState != 0) online = true;
}
////////// Checking navigator.onLine before document ready is key ///////////
var online = navigator.onLine || false;

$(document).ready(function() {  
  $(document).bind('deviceready', function(){
    onDeviceReady()
  })
})

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2019-08-13
相关资源
最近更新 更多