2015-09-02 2 views
-1

Je dois définir mon booleanisOnline sur false et le mettre à jour dans la base de données distante si l'application est fermée ou supprimée.Mettre à jour une valeur dans la base de données distante si l'application est supprimée ou fermée en arrière-plan

Y at-il un moyen de détecter si mon utilisateur le fait? Je ne veux pas faire cela en onStop(). Et onDestroy() ne semble pas être appelé si mon utilisateur tue le processus de l'application via Android.

Cordialement,

+0

http://developer.android.com/reference/android/app/Activity .html # onStop() –

Répondre

0

Hmmm puis-je vous demander pourquoi vous ne voulez pas faire cela en onStop?

Quoi qu'il en soit, onStop ne peut pas toujours être appelée dans des situations de mémoire insuffisante, ainsi que onDestroy, comme lorsque Android est affamé pour les ressources et ne peut pas correctement l'arrière-plan de l'activité.

Donc, est la dernière méthode dont vous êtes assuré qu'elle sera appelée. Et peut-être vous pouvez l'utiliser en combinaison avec isFinishing(), comme expliqué dans http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29

public boolean isFinishing()

Vérifiez si cette activité est en train de terminer, soit parce que vous avez appelé finish() sur elle ou quelqu'un d'autre a demandé qu'il a fini. Ceci est souvent utilisé dans onPause() pour déterminer si l'activité est simplement en pause ou complètement terminée.

Une autre méthode qui pourrait être de votre intérêt si vous proposons quelques alternatives:

public void onWindowFocusChanged (boolean hasFocus) 

Appelée lorsque la fenêtre actuelle des gains d'activité ou perd le focus. C'est le meilleur indicateur pour savoir si cette activité est visible pour l'utilisateur. L'implémentation par défaut efface l'état de suivi des clés. Vous devez donc toujours l'appeler.

(aller arrière-plan n'a pas à dire l'utilisateur a fermé l'application, mais vous saurez si elle pourrait être utile pour vous)

+0

Merci pour cette réponse, isFinishing est utile. Mais cela ne résout pas vraiment mon problème. Je veux mettre le booléen à faux si mon utilisateur tue l'application du système d'exploitation, quand l'application a déjà été réduite (mise en arrière-plan). Et je pense que seulement onDestroy est appelé dans ce cas ... – Heretyk