Android - Périodique D'Arrière-Plan De Services - Conseils
Je suis en train de travailler sur une application qui permettra de relayer les informations sur sa localisation à un serveur distant. J'ai l'intention de le faire en faisant un simple post de HTTP pour le serveur web et tout est simple et beau.
Mais selon la spécification, l'application doit s'exécuter lui-même de temps en temps, disons une fois tous les 30 minutes. Être indépendant de l'interface, ce qui signifie dont elle a besoin pour s'exécuter même si l'application est fermée.
J'ai regardé autour et a trouvé que Android Services est ce qui doit être utilisée. Que pourrais-je utiliser pour mettre en œuvre un tel système. Le service (ou autre mécanisme) redémarrer lorsque le téléphone redémarre?
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
Créer un
Service
d'envoyer vos informations à votre serveur. Sans doute, vous avez sous contrôle.Votre
Service
devrait être mise en place d'une alarme déclenchée par leAlarmManager
, où vous pouvez spécifier un intervalle. Sauf si vous devez déclarer vos données exactement toutes les 30 minutes, vous voudrez probablement la inexact d'alarme de sorte que vous pouvez économiser de vie de la batterie.Enfin, vous pouvez enregistrer votre application pour obtenir le démarrage de la diffusion par la mise en place d'un
BroadcastReceiver
comme suit:Vous aurez besoin d'ajouter de l'autorisation suivante à votre
AndroidManifest.xml
pour que cela fonctionne. N'oubliez pas d'enregistrer vos alarmes lorsque vous exécutez l'application, normalement, ou ils vont être enregistrés seulement lorsque l'appareil démarre.Ici est un semi-autre manière à la garder à jamais. Il y a des façons de le tuer dans le code si vous souhaiteriez
Service D'Arrière-Plan:
Ici est de savoir comment vous le démarrez à partir de votre activité principale ou partout où vous le souhaitez:
onDestroy()
sera appelée lorsque l'application est fermée ou tués, mais les exécutables commence juste le droit de sauvegarder.J'espère que cela aide quelqu'un à sortir.
La raison pour laquelle certaines personnes ne c'est parce que des applications de l'entreprise, où, dans certains cas, les utilisateurs et les employés ne doivent pas être en mesure d'arrêter certaines choses 🙂
http://i.imgur.com/1vCnYJW.png
MODIFIER
Depuis Android O (8.0) vous devez utiliser
JobManager
pour les tâches planifiées. Il y a une bibliothèque appelée Android-Emploi par Evernote qui permettra de faire périodiquement un travail de fond une brise sur toutes les versions d'Android. J'ai aussi fait une Xamarin De Liaison de cette bibliothèque.Puis tout ce que vous devez faire est le suivant:
Dans votre classe d'application:
Créer deux classes suivantes
YourJobCreator
etYourSyncJob
(Où tout le travail sera fait. Android alloue du temps pour toutes les tâches en arrière-plan à exécuter. Pour les versions d'android < 8.0 il sera toujours exécuté avec une Alarme de gestionnaire et de service d'arrière-plan, comme la normale)AndroidManifest.xml
:<service android:name=".services.MyService" android:label="MyService" ></service>
.Vous devez planifier votre service avec alarm manager, créez d'abord l'attente de l'intention du service:
Puis de planifier l'utilisation de l'alarme manager:
cela permettra de lancer votre service après 5 secondes de l'heure actuelle. Vous pouvez faire votre alarme à répétition.
System.currentTimeMillis() + TIMEOUT_MS
que de coucher avec laCalendar
, pour obtenir votre retard initial.public static final long INTERVAL_DAY
public static final long INTERVAL_FIFTEEN_MINUTES
public static final long INTERVAL_HALF_DAY
public static final long INTERVAL_HALF_HOUR
public static final long INTERVAL_HOUR
Vous pouvez utiliser Alarm Manager de démarrer le Service à l'heure spécifiée, puis répéter l'alarme dans l'intervalle spécifié. Lorsque l'alarme se déclenche, vous pouvez démarrer le service et de se connecter à un serveur et de faire ce que vous voulez