Comment dois-je faire face à la persistance d'un Android WebView si mon activité est détruite tout en montrant un autre?

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

  •  22-09-2019
  •  | 
  •  

Question

Je construis une application Android qui est basé autour d'un WebView amélioré (basé sur PhoneGap). J'ai amélioré le WebView de sorte que de l'exécution de JavaScript à l'intérieur, vous pouvez appeler le sélecteur de contact natif de choisir un numéro de téléphone (qui peut être fournie par Facebook par exemple).

Le problème est que je le sélecteur de contact natif fonctionne dans une activité dans un autre processus et les docs Android disent que si une autre activité est ouvert mon activité peut être détruit en raison des contraintes de mémoire. Je ne l'ai pas vraiment vu cela se produire dans ma demande, mais si elle a fait alors je devine l'état de ma WebView serait détruite et le code qui attendait le contact choisi prendrait fin.

Il semble un peu fou que l'activité demandant un contact pourrait être détruit tandis que le sélecteur de contact est ouvert. Est-ce que quelqu'un sait si cela ne se produit en effet? Est-il un moyen de conserver l'état de la WebView si elle fait?

Merci,

-Shaun

Était-ce utile?

La solution

  

Quelqu'un sait si cela ne fait   arriver?

Vous regardez le problème trop simplement.

Vous avez un WebView. Vous ouvrez l'application Contacts. Bien que l'utilisateur se trouve dans l'application Contacts, un appel téléphonique entre en jeu. Alors que sur l'appel téléphonique (en utilisant un casque Bluetooth), un message textuel arrive, afin que l'utilisateur ouvre que jusqu'à la date de notification. Tout en restant sur l'appel téléphonique et envoyer des SMS loin, un texte vient avec un lien, elle tape et fait apparaître l'application du navigateur.

En ce moment, votre activité est sûrement détruite, sauf peut-être quelques-uns des plus récents téléphones qui ont un peu juste de RAM.

Maintenant, est-ce courant? Non. Cependant, cela n'a rien à voir avec l'application Contacts - si l'utilisateur appuie sur HOME, à un moment donné à l'avenir, votre activité peut être détruite pour libérer de la RAM et

.
  

Y at-il un moyen de maintenir l'état de   WebView si elle fait?

Cela dépend de ce que vous considérez comme « l'état du WebView » soit. C'est vraiment le travail de PhoneGap, si vous faites une application basée sur PhoneGap. Ainsi, vous pouvez envisager de les demander.

Il n'y a aucun moyen pour conserver les DOM. Il y a plusieurs façons triviales Persister l'URL (voir onSaveInstanceState()). Et il peut y avoir des choses entre ce que vous considérez comme une partie de « l'état de la WebView » qui peuvent ou peuvent ne pas être possible d'enregistrer.

Autres conseils

La réponse longue et détaillée est un peu compliqué, mais essentiellement, il se résume à quelques points:

scroll top