Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
Cordova Android LocalStorage pierde el último elemento guardado al quitar la batería o quedarse sin batería

Versiones: Cordova: 10.0.0 Cordova-Android: 9.0.0

Objetivo: los elementos guardados en LocalStorage deben conservarse inmediatamente y pase lo que pase.

Investigación: Me encontré con este problema por primera vez cuando dejé la aplicación funcionando durante el fin de semana. Cuando regresé, la batería del teléfono estaba vacía y, después de iniciar la aplicación, se perdieron algunos datos de LocalStorage.

Así que hice algunas pruebas y primero no pude reproducir el problema. Lo que probé: escribir datos en LocalStorage ( localStorage.setItem('foo', 'bar') )

  • Forzar el cierre de la aplicación
  • Reinicie el dispositivo mientras se ejecuta la aplicación
  • Jugando con el modo avión (no tiene mucho sentido)

Luego logré reproducir el problema:

  • Escribir datos en LocalStorage ( localStorage.setItem('foo', 'bar') )
  • Retire la batería del dispositivo mientras la aplicación aún se está ejecutando
  • Inicie el dispositivo/aplicación y desaparece. localStorage.getItem('foo') => undefined

Hice la siguiente prueba:

  • Escribir datos en LocalStorage: localStorage.setItem('foo', 'bar') localStorage.setItem('foo2', 'bar2')
  • Retire la batería del dispositivo mientras la aplicación aún se está ejecutando
  • Inicie el dispositivo/aplicación y desapareció parcialmente: localStorage.getItem('foo') => 'bar' localStorage.getItem('foo2') => undefined

Entonces parece que el último elemento almacenado se pierde. Lo cual no tiene demasiado sentido para mí. Traté de averiguar dónde la vista web de Android persiste en LocalStorage, para verificar si los datos se conservan en el sistema de archivos después de una llamada setItem .

Lo mejor que pude encontrar fue este comando para acceder al archivo de registro de LocalStorage. adb exec-out run-as com.package.name cat /data/data/com.package.name/app_webview/Default/Local\ Storage/leveldb/000003.log

Entonces, cada vez que realicé una acción como setItem , o después de quitar la batería, verifiqué el archivo de registro de LocalStorage directamente en el dispositivo.

  • Después localStorage.setItem('foo', 'bar') => file://...foo...bar se agregó al archivo de registro.
  • Después de quitar la batería y reiniciar el dispositivo => file://...foo...bar ya no estaba presente en el archivo de registro.

Resumen: LocalStorage pierde el último elemento configurado al quitar la batería mientras la aplicación aún se está ejecutando.

Mi solución actual sería llamar siempre a un setItem adicional con la marca de tiempo actual, pero realmente me gustaría encontrar una solución adecuada para eso.

Preguntas: ¿Cómo puedo comprobar el objeto LocalStorage persistente actual en el sistema de archivos de Android? ¿Por qué sucede esto y cuál es la mejor manera de solucionarlo?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda