J'ai une interface de service simple que j'utilise pour synchroniser les données avec un serveur via HTTP. L'interface de service a une méthode pour démarrer et arrêter le processus de synchronisation. L'idée est de démarrer le processus de synchronisation après que l'utilisateur se connecte et d'arrêter la synchronisation à la fin de l'application avant que l'utilisateur ne se déconnecte. Le service de synchronisation vérifiera les nouveaux messages toutes les quelques minutes, puis notifiera le (s) ViewModel (s) des données nouvelles/modifiées en utilisant le plugin MvxMessenger.Maintenir un service actif pendant toute la durée de vie de l'application
Quelle est la méthode recommandée pour assurer la durée de vie du service de synchronisation pour la durée de l'application? J'utilise actuellement un IMvxAppStart personnalisé qui enregistre l'interface de service en tant que singleton, puis contient une référence statique à l'interface de service. Est-ce suffisant pour maintenir le service en vie pendant la durée de vie de l'application, ou existe-t-il un meilleur moyen?
public class App : MvxApplication
{
public override void Initialize()
{
...
RegisterAppStart(new CustomAppStart());
}
}
public class CustomAppStart : MvxNavigatingObject, IMvxAppStart
{
public static ISyncClient SynchronizationClient { get; set; }
public void Start(object hint = null)
{
SynchronizationClient = Mvx.Resolve<ISyncClient>();
ShowViewModel<SignInViewModel>();
}
}
public interface ISyncClient
{
void StartSync();
void StopSync();
bool IsSyncActive { get; }
}