2017-09-18 8 views
0

J'ai une application qui utilise le détecteur de mouvement pour surveiller l'utilisateur indéfiniment. Parfois, la surveillance sera de 5 minutes, parfois de 4 heures. Quoi qu'il en soit, l'application sera mise à l'arrière-plan mais doit rester opérationnelle. Lorsque vous mettez l'application au premier plan (en la sélectionnant dans la liste des applications récentes) 95% du temps, tout fonctionne comme prévu. L'autre 5% du temps, l'application redémarre, perdant toutes les données enregistrées. Je ne peux pas comprendre (1) ce qui déclenche le comportement différent ou (2) comment empêcher l'application de redémarrer.App sélectionnée à partir de la liste des applications récentes - comportement non conforme

Répondre

1

Si l'application est redémarrée ou non dépend de si elle a été interrompue par le système entre-temps. Cela se produit généralement si votre appareil a besoin de plus de mémoire pour d'autres applications, mais peut généralement se produire à tout moment. Vous ne devez donc pas compter sur votre application pour continuer à fonctionner en arrière-plan. Vous pouvez facilement tester cela en utilisant un appareil avec peu de mémoire ou en démarrant une application qui nécessite beaucoup de mémoire, par ex. un jeu.

Solution: Tout d'abord, vous devez vous assurer que les données collectées sont conservées de manière permanente et non seulement conservées en mémoire dès que vous les collectez. Par exemple, vous pouvez stocker les données dans une base de données locale ou les préférences partagées Android. Ce faisant, vous pouvez récupérer les données ultérieurement si l'application a été arrêtée. Si vous souhaitez également vous assurer que le périphérique continue la surveillance même si la mémoire est insuffisante, vous pouvez utiliser un service de premier plan. (https://developer.android.com/guide/components/services.html#Foreground)

+0

Merci pour la réponse claire. Je vais examiner toutes vos suggestions et accepter la réponse en temps voulu. – seekingStillness