Je stocke les informations relatives aux utilisateurs dans une base de données locale. Dans les activités et les fragments, j'utilise AndroidViewModel et LiveData pour écouter les changements apportés à la base de données et mettre à jour l'interface utilisateur.
Je souhaite à présent analyser toutes les données relatives aux utilisateurs passés afin de formuler des recommandations pour les décisions futures. Mes recommandations changent à chaque modification de la base de données effectuée par l'utilisateur. Je dois donc mettre à jour mes recommandations fréquemment tout en effectuant les mêmes calculs encore et encore.
Je pensais lancer un service au démarrage de l'application qui écoute les changements dans la base de données via ViewModel et LiveData et met à jour mes recommandations (qui sont également stockées dans la même base de données). Mais d'une manière ou d'une autre, un Service ne peut pas
- obtenir un ViewModel via
viewModel = ViewModelProviders.of(this).get(DataViewModel.class);
- observe un objet LiveData car il ne s'agit pas d'un LifecycleOwner.
Je dois simplement lire toutes les entrées de la base de données, analyser les données et mettre à jour 5 à 10 valeurs à chaque fois que le contenu de la base de données change.
Comment et où dois-je faire mes calculs si ce n'est pas dans un service ? Peut-être suis-je prisonnier d'une mauvaise pensée et qu'un service n'est pas la bonne façon de procéder, alors toute idée sur la façon de procéder est très appréciée !