2017-10-13 7 views
1

J'ai une application Android qui a un service d'arrière-plan, qui fonctionne toutes les 5 minutes. Il allume le GPS et compare avec la position de départ, si vous êtes en voyage (vérifier la vitesse et la distance), démarrez l'application pour suivre et analyser comment le conducteur conduit.Doutes sur l'exécution de la limite d'exécution en arrière-plan dans Android Oreo

Cette application fonctionne et est dans le magasin, mais je suis mise à jour à Android Oreo, et je ne suis pas sûr de savoir comment cela va fonctionner cette politique de service en SO fond Li sur le sujet et j'ai vu que Android aura un fenêtre où les services de fond va mais je ne sais pas comment le type de service dont j'ai besoin se comportera.

+0

Veuillez expliquer en détail ce que signifie "fonctionne toutes les 5 minutes". Utilisez-vous 'AlarmManager' pour ça? 'JobScheduler'? Autre chose? – CommonsWare

+0

C'est un service qui a une minuterie pour toutes les 5 minutes pour écouter le GPS et vérifier si vous êtes en voyage. Je suis en train de mettre à jour ce code et j'utiliserai Firebase JobScheduler. Mais ma question est de savoir comment cette limitation d'Android Oreo fonctionnera, car je lis beaucoup de matériel parlant qui permettra un accès en arrière-plan seulement quelques fois par heure. – danielvilha

+0

"C'est un service qui a une minuterie pour toutes les 5 minutes pour écouter le GPS" - s'il vous plaît ne faites pas cela. ** N'exécute un service que lorsqu'il fournit activement de la valeur à l'utilisateur **. Regarder l'horloge ne donne pas activement de valeur à l'utilisateur. Vous attachez de la RAM système que l'utilisateur n'a pas beaucoup de et apprécierait vraiment d'utiliser à d'autres fins. Votre principal problème avec Android 8.0 est que [vous n'obtiendrez pas beaucoup de données de localisation en arrière-plan] (https://developer.android.com/about/versions/oreo/background-location-limits.html). – CommonsWare

Répondre

1

Vous pouvez utiliser la bibliothèque JobIntentService de support pour remplacer le service d'intention. https://developer.android.com/reference/android/support/v4/app/JobIntentService.html

+0

J'ai déjà lu sur JobIntentService et j'ai choisi d'utiliser JobScheduler depuis [Firebase] (https://github.com/firebase/firebase-jobdispatcher-android) car il est compatible avec toutes les versions d'Android depuis le niveau API 9+. – danielvilha

+0

Dans les anciennes versions, JobIntentService utilise le service IntentService traditionnel pour la compatibilité. Alors que vous pouvez aveuglément compter sur cette API. Mais dans le cas de JobScheduler de Firebase, vous devriez tester correctement sur tous les appareils. De toute façon, c'est ta décision. Merci. –