versiones plugin lib create clobbers cambiar android cordova local-storage

plugin - ¿El almacenamiento local para una aplicación Phonegap en un dispositivo Android es independiente del navegador integrado?



plugin cordova android (4)

Mi pregunta es esencialmente un seguimiento o una aclaración a esta pregunta .

Tengo una aplicación para Android creada con Javascript y el servicio Phonegap Build de Adobe , y estoy usando el "almacenamiento local" para almacenar datos en el dispositivo.

De esa otra pregunta, aprendí que los datos almacenados en el almacenamiento local son esencialmente "permanentes", ya que permanecerán en el dispositivo por tiempo indefinido, a menos que el usuario actúe en él borrando manualmente el caché de la aplicación o elimine la aplicación (y tal vez Otras circunstancias inusuales con las que estoy dispuesto a vivir.

Sin embargo, parte de la respuesta aceptada fue confusa para mí, ya que comenzó a desdibujar las líneas entre hablar sobre el navegador del teléfono y hablar sobre una aplicación de Phonegap.

Lo que no me queda claro es si una aplicación en Android que usa Phonegap usa el mismo caché que el navegador integrado del teléfono. ¿Es Phonegap esencialmente una extensión de la facilidad del navegador existente, o es su propio navegador independiente y autónomo?

Críticamente, si un usuario borra el caché en su navegador, ¿afectará eso a una aplicación instalada basada en Phonegap?


Al realizar esta configuración en su mainActivity (que está extendiendo Droidgap).

super.appView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

Estamos haciendo nuestra aplicación para no almacenar el caché.


No, la memoria caché creada en el navegador de la aplicación solo se puede eliminar con los métodos:

window.localStorage.removeItem("key");

o

window.localStorage.clear();

o desinstalación de la aplicación

o acción manual (eliminar datos / caché) en el administrador de aplicaciones.

Pero la mejor respuesta es hacer un experimento y ver qué sucede.


Sí, está separado, pero hay un momento en el que necesita pasar una variable de algún tipo al navegador de aplicaciones. Hace que la codificación sea mucho más fácil pasar un elemento ls de una vista web actual a otra como en iOS.

Esto es lo que hice en PhoneGap

Utilizo InAppBrowser executeScript () para pasar una copia de las vistas web actuales de localStorage a otra.

//add the listener to detect when the page loads after inappbrowser is called into view ref.addEventListener(''loadstop'', function(){ ref.executeScript({code: ''SetInAppBrowserLocalStorage(/'''+localStorage+''/');''}); });

//In your inAppBrowser page you create a function that will get called on loadStop //This will pass "all" the contents of the main webviws localStorage to the webview //created by InAppBrowser function SetInAppBrowserLocalStorage(localStorageThatWasPassed){ localStorage = localStorageThatWasPassed; };

También puede borrar el localStorage creado por SetInAppBrowserLocalStorage () antes de que el uso también deje esa vista.

Probado y funcionando al 100%:) ... avíseme si necesita más ayuda

***ACTUALIZAR*****

Esto todavía funciona ... pero ya no es consistente. Después de muchas pruebas me doy cuenta de que esto simplemente no es el camino a seguir. A veces, los datos simplemente no se pasan lo suficientemente rápido cuando se crea la instancia de inappbrowser. Hablé con la gente de Córdoba a través del localizador de problemas y me dijeron que no era una forma segura de hacer las cosas ... Lo entiendo ... pero mi respuesta fue: si solo quiero pasar las variables ls entre páginas en mi aplicación ... no se puede acceder a ellos desde Internet ... Honestamente, no entiendo por qué no se puede acceder a los elementos de ls globalmente en la aplicación, como ocurre en iOS y en el resto de la web. Si alguien tiene una solución mejor, me encantaría saberlo.


Ya que Phonegap usa Webiview para renderizar su aplicación: WebView y Phonegap .

Y por razones de seguridad, cada aplicación que utiliza WebView tiene su propio caché e historial. "Ningún usuario o sistema operativo desea que los datos sean accedidos por aplicaciones de terceros". En pocas palabras, su aplicación mantendrá su propio historial y datos en su carpeta de caché y se eliminará en uno de los siguientes casos:

  • El usuario los borró manualmente.
  • El usuario usó la pantalla de configuración de la aplicación y la eliminó.
  • Aplicación desinstalada.

Para leer más sobre esto. Eche un vistazo a la caché de WebView: administración de cookies y ventanas