localStorage не сохраняется, когда приложение выходит из памяти (Phonegap) - PullRequest
2 голосов
/ 14 марта 2011

Кажется, у меня проблема с localStorage и Phonegap.Насколько я понимаю, мобильное сафари должно сохранять локальное хранилище независимо от того, находится ли это приложение в памяти или нет.По какой-то причине, когда я очищаю свое приложение из памяти и перезапускаю его, кэш локального хранилища исчезает (я могу подтвердить, что действительно задает данные, хотя).

Есть идеи?


РЕДАКТИРОВАТЬ: понял это.Это не проблема с localStorage вообще.Store сохраняется при выходе из приложения.Проблема была в том, что обратный вызов сети 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()
  })
})

1 Ответ

0 голосов
/ 07 марта 2019

Я просто копирую реальный ответ на ответ, все из @nic aitch

Разобрался. Это не проблема с 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()
  })
})
...