2015-02-25 5 views
1

Je développe une application Android liée à gps. cela envoie périodiquement des informations de localisation au serveur. Parfois, je suis en train de tuer le problème de certains appareils.empêcher application pour effacer les données de l'application lors de l'exécution en arrière-plan

si mon application s'exécute en premier plan puis son fichier de travail. mais pendant que nous réduisons l'application et la déplacons vers l'arrière ou une fois que le téléphone se met en veille, l'application efface automatiquement toutes les données et variables de l'application. puis, lorsque nous avons essayé de reprendre l'activité, elle affichait des informations vierges et générait des exceptions. Comment éviter l'effacement des données de l'application pendant l'exécution de l'application dans backgtound? Je veux garder cette information telle qu'elle est. ce problème ne se pose que dans certains appareils pas tous. J'ai également essayé la recherche sur Google, mais n'obtenant aucune bonne solution.

S'il vous plaît Aidez-moi. Je vous remercie.

+0

Android ne doit pas effacer les données d'application stockées correctement ou permettre à une autre application de le faire - c'est quelque chose qui devrait se produire uniquement lors de la désinstallation ou du menu des paramètres. Si les utilisateurs d'anciens appareils Android avec une sécurité brisée ont installé des applications mal conçues qui effacent vos données, vous pouvez afficher un AlertDialog lors de la prochaine exécution et expliquer pourquoi ils ne devraient pas vous faire cela. Bien sûr, l'autre possibilité est que vous ne persistiez pas correctement vos données - comment les stockez-vous? Vous devriez en effet vous attendre à ce que le processus de votre application puisse mourir, surtout en arrière-plan. –

+0

@Ajay Vous voulez dire que les données stockées dans 'Application class' sont effacées? Si c'est le cas, ce n'est pas une bonne approche pour stocker des données dans la classe d'application. Référer cet article: http://www.developerphil.com/dont-store-data-in-the-application-object/ –

+0

@AbhishekV: oui vous avez raison. mais j'ai besoin de cette information seulement dans la portée de l'application. Une fois l'application fermée, toutes les informations doivent être claires. Je pense que je dois aller pour SharedPrefrences. droite? – Ajay

Répondre

0

Vous ne pouvez pas faire comme ça. Si vous voulez que votre application continue d'envoyer des données à un service distant même si l'application est en arrière-plan, vous devez le faire depuis longtemps Service. Gardez à l'esprit qu'un service s'exécute par défaut dans le thread principal, vous devez donc exécuter vos communications avec le serveur dans un thread d'arrière-plan (quel que soit le type, asynctask, wtv). Ensuite, pour vous assurer qu'Android ne tue pas votre service si la mémoire est insuffisante, vous devez définir votre service comme foreground service avec une notification. De cette façon, même si votre application est envoyée en arrière-plan, vous êtes sûr qu'Android va continuer la communication.