Ich habe viele Threads durchsucht und finde immer noch keine Antwort auf meine Frage. Ich arbeite an einer Android
App, die WebView
verwendet.Sichert WebView saveState() JavaScript-Variablen/Umgebung?
Ich benutze onSaveInstanceState()
und onRestoreInstanceState()
den WebView
Zustand wie folgt zu speichern:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
webView.saveState(savedInstanceState);
}
und
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
webView.restoreState(savedInstanceState);
}
ich dies auch in meinem onCreate()
haben:
public void onCreate(Bundle savedInstanceState) {
... other code ...
if(savedInstanceState != null){
webView.saveState(savedInstanceState);
}else{
webView.loadUrl("http://mypage");
}
}
Das Problem : Es scheint, dass die Wiederherstellung WebView
den Javascript
Variablen/Umgebung/Arbeitsbereich überhaupt nicht wiederherstellt. Wenn die App im Hintergrund beendet und dann wiederhergestellt wird, ist das gesamte Javascript mit allen Objekten/Variablen verschwunden. Der Javascript-Code ist mit einem Namen versehen, d. H. window.utilitiesPack
, window.eventHandlers
, window.automation
usw. und sie sind nicht definiert. Auch JQuery
und andere Javascript-Plugins werden verwendet: alle scheinen nach dem Wiederherstellungsstatus nicht definiert zu sein. Grundsätzlich wird das gesamte Javascript nicht wiederhergestellt.
Kann jemand bestätigen oder widerlegen, dass es so ist (Javascript wird nicht gespeichert)? Wenn der gesamte Javascript-Arbeitsbereich nicht gespeichert wird, was genau speichert WebView.saveState()
? Gibt es eine einfache/elegante Möglichkeit, die vorhandene API zu verwenden, um die JavaScript-Objekte zu erhalten?
// ============================================ ==========
Update1: So bleibt das Problem bestehen. Die größte Schwierigkeit ist diese:
Ich starte eine Kamera Intent
für ein Ergebnis. Wenn das Bild aufgenommen wird, kehrt die App zu WebView
Aktivität zurück und soll JavaScript verwenden, um HTML5 LocalStorage
mit einigen Datenvariablen zu aktualisieren.
Die Hauptaktivität mit WebView
wird beendet, während die Kameraaktivität angezeigt wird. Wenn wir also zu WebView zurückkehren, gibt es kein Javascript mehr und keine Funktionen, die ich von Android-Code aus aufrufen kann. Dies geschieht jedes Mal auf Galaxy S3
. Es passiert immer noch auf anderen Telefonen, aber nicht jedes Mal auf Bildaufnahmen.
Ich weiß nicht, was ich hier tun soll. Irgendwie muss ich die Hauptaktivität mit WebView machen, um den Zustand beizubehalten, während das Bild mit der Kamera Absicht gemacht wird. Hat jemand eine Idee, wie dies erreicht werden kann?
"Kann jemand bestätigen oder widerlegen, dass es so ist, wie es wirklich ist" - hast du das nicht einfach bestätigt, indem du es ausprobiert hast und gesehen hast, was passiert ist? – millimoose
(Die Dokumentation scheint zu implizieren, dass das, was gespeichert wird, eine 'WebBackForwardList' ist.) – millimoose
" hast du das nicht einfach bestätigt, indem du es versuchst und zu sehen, dass das tatsächlich passiert? " Ich kann einfach nicht glauben, dass das gesamte Javascript nicht gespeichert wird. Ich hoffe, dass ich etwas nicht verstehe, denn wenn das der Fall ist, ist dies eine Einschränkung für Apps, die Webseiten mit komplexer JavaScript-Funktion verwenden. – user2113581