Wie soll ich mit persistierenden ein Android WebView umgehen, wenn meine Aktivität zerstört wird, während ein anderes zeigt?

StackOverflow https://stackoverflow.com/questions/2508008

  •  22-09-2019
  •  | 
  •  

Frage

Ich baue eine Android-Anwendung, die sich um eine verbesserte WebView (basierend auf PhoneGap) basiert. Ich habe die WebView so dass eine verstärkte von JavaScript läuft in dir den nativen Kontakt Picker aufrufen kann eine Telefonnummer zu wählen (die von Facebook zum Beispiel geliefert werden kann).

Das Problem, das ich habe ist, dass die nativen Kontakt Picker läuft in einer Tätigkeit in einem anderen Prozess und die Android docs sagen, dass, während eine andere Aktivität meiner Tätigkeit ist offen kann aufgrund von Speicherbeschränkungen zerstört werden. Ich habe nicht wirklich gesehen dies in meiner Anwendung passieren, aber wenn es so wäre, dann würde ich vermute Zustand meiner WebView ist zerstört werden und der Code, der für den aufgenommenen Kontakt wartet würde beendet werden.

Es scheint ein bisschen verrückt, dass die Aktivität einen Kontakt anfordernden zerstört werden könnte, während der Kontakt Picker geöffnet ist. Hat jemand wissen, ob das tatsächlich geschieht? Gibt es einen Weg, um den Zustand der WebView zu bestehen, wenn es funktioniert?

Danke,

-Shaun

War es hilfreich?

Lösung

  

Wer weiß, wenn das tut in der Tat   passieren?

Sie sind auch einfach auf das Problem suchen.

Sie haben einen WebView. Sie öffnen die Kontakte-Anwendung. Während der Benutzer in der Kontaktanwendung ist, kommt ein Anruf in. Während auf den Anruf (mit einem Bluetooth-Headset), eine Textnachricht eingeht, so dass der Benutzer von seiner Mitteilung eröffnet. Während noch auf den Anruf und eine SMS entfernt, kommt ein Text mit einem Link, so dass sie es klopft und die Browser-Anwendung bringt.

Nach dieser Zeit wird Ihre Aktivität sicher zerstört, es sei denn auf vielleicht einige der neuesten Handys, die ein gutes Stück von RAM haben.

Nun, das ist üblich? Nein, aber das hat auch nichts mit der Kontaktanwendung zu tun - wenn der Benutzer drückt HOME, irgendwann in der Zukunft, Ihre Aktivität RAM als auch frei werden zerstört kann

.
  

Gibt es einen Weg, um den Zustand des beharren   die WebView wenn es funktioniert?

Das hängt davon ab, was Sie als „der Zustand der WebView“ zu sein. Das ist wirklich Aufgabe des PhoneGap, wenn Sie einen machen PhoneGap-basierte Anwendung. So könnten Sie betrachten sie zu fragen.

Es gibt keine Möglichkeit, das DOM zu beharren. Es gibt trivial Möglichkeiten, die URL (siehe onSaveInstanceState()) bestehen bleiben. Und vielleicht gibt es Zeug dazwischen, dass man bedenkt, Teil von „dem Stand der WebView“, die nicht möglich sind oder nicht zu speichern.

Andere Tipps

Die lange und ausführliche Antwort ist ein wenig kompliziert, aber im Wesentlichen kommt es auf ein paar Punkte nach unten:

  • Wenn die Android OS Reinigung Aktivitäten oder Dienstleistungen zu gehen hat, weiß er, wie zu priorisieren, welche davon zuerst gehen sollte. Es tut dies, je nachdem, ob sie sind momentan im Vordergrund (letzte gehen), in der Mitte Code ausführen, auf ein Ergebnis warten oder einfach inaktiv sitzt im Hintergrund (zuerst zu gehen). Sie können ziemlich sicher sein, dass, wenn Ihre WebView Aktivität den Kontakt Picker mit dem startActivityForResult ins Leben gerufen, wird sie nicht getötet werden
  • Es gibt ein ganzes System zum Speicher von Daten, wenn eine Tätigkeit getötet wird, wie die onPause Methode (die, sobald Ihre Aktivität Blätter im Vordergrund ausgelöst werden), die onSaveInstanceState Methode, die aufgerufen wird, wenn Sie Ihre Aktivität im Begriff ist zu sterben. Lesen Sie weiter, die bis zu mehr Informationen und die configurationChanged Methode zu erhalten, wenn die Bildschirmausrichtung ändert. Wenn Sie mindestens Skim nicht lesen Sie die Activity Lifecycle Dokument auf die Entwickler-Seite, müssen Sie das tun.
  • Schließlich, ich bin sicher, dass diese Frage oft angesprochen wurde, aber mit leicht Formulierung oder Situationen zu variieren. Werfen Sie einen Blick herum, sehen, was sonst kann man finden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top