2017-10-17 14 views
-1

J'ai développé une application Android et je souhaite ajouter la fonction suivante: Envoie chaque minute d'information à un service Web, même si l'application est en arrière-plan. J'aimerais que cette fonctionnalité fonctionne le long de la journée.App envoyant des informations chaque minute en arrière-plan

J'ai essayé avec AlarmManager appelant à un BroadcastReceiver et le dernier appelant à LocationManager.requestSingleUpdate mais il ne fonctionne pas très bien, même le même code, fonctionne avec un intervalle différent, selon l'appareil, si c'est une tablette o téléphone, et je ne sais pas pourquoi.

Quelqu'un peut-il m'aider?

Merci à l'avance

+1

Essayez avec un service en cours d'exécution à fond. Probaqble vous n'atteindrez pas "chaque minute" en raison des restrictions Doze sur les nouvelles versions Android – webo80

+0

J'ai essayé cela et cela n'a pas fonctionné pour moi. En outre, je ne comprends pas pourquoi la même application, il fonctionne toutes les 1 min dans un appareil et toutes les 5 min dans une autre (tablette/téléphone) – Juanjo

+1

peut être parce que la version Android OS. Les versions plus récentes sont plus agressives avec le travail de fond. Peut-être que vous pouvez lot et enregistrez-le hors ligne et ensuite envoyer tout à la fois – webo80

Répondre

1

mieux connaître votre cas d'utilisation maintenant, j'ai peur de dire non, il est impossible d'obtenir ce que vous voulez (pour faire une action tous les 1 minute en arrière-plan). En raison des (bonnes) limitations de Doze, vous ne pouvez tout simplement pas faire cela, cela drainera très rapidement la batterie de l'utilisateur. Pour effectuer une tâche répétitive de manière périodique, vous devez avoir l'application au premier plan. Vous pouvez acquérir un WAKE_LOCK, mais je pense que vous ne le voulez pas, à cause de la décharge de la batterie aussi.

Votre meilleure option à mon humble avis est en train de changer la logique de l'application, et recolect la position ou quelle que soit en réponse à des événements, par exemple, au lieu de le faire périodiquement

+0

et pourrais-je déclencher un événement chaque minute? Pouvez-vous me donner un exemple ou me dire les mots-clés à rechercher? Merci – Juanjo

+1

@Juanjo L'événement ne peut pas être périodique. Je me réfère à envoyer l'information au serveur sur certaines actions de l'utilisateur. Par exemple, s'il s'agit de livrer un paquet, d'obtenir son emplacement quand une livraison est terminée, ou quand ouvre la liste des livraisons, r quand il ouvre l'application, par exemple. Juste des exemples – webo80

+0

ah ok, je comprends. Je vais faire des recherches à ce sujet. Merci – Juanjo