Comment faire pour exécuter une méthode dans l'arrière-plan uniquement lorsque l'application est ouverte et en cours d'exécution?
Une fois que l'application est ouvert et en cours d'exécution je voudrais un processus d'arrière-plan pour vérifier une base de données et de faire une mise à jour en fonction des données dans la base de données. Je voudrais faire cette case à chaque minute. Je veux seulement que cela arrive lorsque l'application est au premier plan, en vue de l'utilisateur.
Quelqu'un peut-il me donner quelques suggestions sur la façon dont je le fais? Je suppose que je peux appeler une méthode à partir d'ici, mais je ne suis pas sûr de la façon de le faire. Aussi, je ne sais pas comment l'arrêter, ou même si j'ai besoin d'annuler manuellement /arrêter le processus. Serait-il annuler lui-même lorsque l'application est en arrière-plan et de redémarrer lorsque l'application est revenue au premier plan?
public partial class App : Application
{
protected override void OnStart()
{
App.DB.InitData();
MainPage = new Japanese.MainPage();
}
Mais je dois faire cette course sur un thread différent et si oui, comment pourrais-je le faire.
Désolé si ma question n'est pas claire. Veuillez demander et je peux mettre à jour si ça n'a pas de sens.
- dépend de ce que vous appelez "arrière-plan". Si vous voulez dire la non-thread d'INTERFACE utilisateur lorsque votre application est en cours d'exécution, puis Manish réponse va travailler. Si vous avez besoin d'une tâche lorsque votre application est vers le bas, puis regardez la réponse de Steven
- Le seul moyen est d'utiliser la MINUTERIE ainsi
Vous devez vous connecter pour publier un commentaire.
Ce que nous avons fait dans nos formulaires de demande était de rendre l'utilisation de l'Appareil.Minuteur et Chronomètre classe disponible dans le Système.Diagnostics, et Xamarin.Les formes pour créer un très générique réussi à rebours qui nous avons pu échanger avec l'aide de la onStart, onSleep et onResume méthodes de Xamarin.Les formulaires.
Cette solution ne nécessite pas de toute spéciale de la plate-forme de logique, et le dispositif de minuterie et chronomètre sont non de l'INTERFACE utilisateur de blocage.
Edit:
Pour donner un contexte à la façon dont la solution ci-dessus fonctionne étape par étape:
L'application démarre à partir d'un état fermé et le " OnStart()' méthode crée notre Dispositif.Minuterie que les tiques de chaque seconde. Il commence aussi à notre chronomètre qui compte jusqu'à une minute.
Lorsque l'application passe en arrière-plan, il frappe la 'OnSleep' méthode à ce point, si nous devions passer un 'faux' valeur dans notre Dispositif.StartTimer() de l'action, cela n'allait pas commencer de nouveau. Nous avons alors il suffit de réinitialiser notre chronomètre prêt pour quand l'application est ouverte de nouveau.
Lorsque l'application est à nouveau à l'avant-plan, il frappe la 'OnResume " méthode", qui commence simplement l'existant chronomètre.
2018 Edit:
Cette réponse a encore quelques mérites même en 2018, mais principalement pour des situations très particulières. Il y a de mieux de la plate-forme de moyens de reproduire cette fonctionnalité, même dans les Xamarin.Les formulaires. Le ci-dessus reste une plate-forme agnostique façon d'effectuer une tâche après une période de temps, en tenant compte de l'activité de l'utilisateur ou de l'inactivité.
vous pouvez utiliser ceci,
Task
sera continue en arrière-plan?Pour exécuter une tâche en arrière-plan utiliser un Service. Généralement classifie les tâches que soit Longue à exécuter des Tâches ou des Tâches Périodiques.
Le code de service dans android ressembler à ceci
Et à appeler le service en arrière-plan
Dans le cas où veut appeler et vérifier après chaque minute
Afin de savoir quel type de service est bon de vous lire ce tutoriel
Types de Services
Xamarin Blog périodique de service d'arrière-plan
Xamarin Service De Blog
L'autre exemple est
Voici un Exemple de Code de XAMARIN Android Service Qui va effectuer la tâche après toutes les 10 Secondes
}
Il ya quelques façons de le faire dans les deux iOS et Android. Dans Xamarin les Formes les plus de cette fonctionnalité tombe sous le nom de la semi-finition. Il y a beaucoup de tutoriels là-bas. Celui-ci est assez élaboré et certainement la peine de vérifier:
http://arteksoftware.com/backgrounding-with-xamarin-forms/
Android, et une grande partie de ce travail est effectué dans un Service d'arrière-plan. Pour iOS regarder dans Longue Course ou de Longueur Finie Tâches. Comme vous pouvez le dire à partir de cela il n'y a pas de Xamarin Forms moyen de le faire. Vous aurez besoin d'écrire Xamarin.Android et Xamarin.iOS code spécifique.
Vous pouvez utiliser
Ce minuteur s'exécute sur le thread d'arrière-plan, qui utilise des appareils de l'horloge et de la re-ouverture coffre fort.
Pour arrêter le minuteur lorsque l'application est en arrière-plan que vous pouvez utiliser Xamarin.Les formulaires.Application méthodes OnSleep et OnResume comme décrit ici
Je suis en train de faire quelque chose comme ceci est mon Xamarin Forms apps.
Facile, essayez quelque chose comme ça et de mettre en œuvre votre logique de ces méthodes:
J'espère que cela aide.