SQLite
 sql >> Base de données >  >> RDS >> SQLite

Mettre à jour les données d'activité du service lorsqu'il est en pause

La manière difficile mais correcte de le faire est de créer votre propre ContentProvider personnalisé pour votre application et mettre à jour toutes les données reçues des services Web et des notifications push vers ce ContentProvider . Lorsque l'Activity revient au premier plan, il se met à jour avec les nouvelles données fournies par le ContentProvider .

C'est dur car créer un ContentProvider personnalisé est beaucoup de travail. C'est le correct parce qu'il est conforme au comportement des applications mobiles et à l'architecture Android :supposons qu'un utilisateur active un service Web ou une tâche gourmande en calculs, puis ferme l'application ; ou dites qu'une notification push arrive et nécessite que les données de l'application soient mises à jour et affichées. Dans les deux cas, l'Activity de l'application s ne peut plus être au premier plan, mais un Service peut être utilisé pour effectuer certaines opérations non liées à l'interface utilisateur. Maintenant à la fin de cette opération, le Service apporte des modifications aux données via le ContentProvider , et lorsque l'utilisateur réactive l'application, l'Activity s obtiennent leurs nouvelles données du ContentProvider .

Pour citer le tutoriel officiel :

Les fournisseurs de contenu sont l'interface standard qui connecte les données d'un processus avec le code exécuté dans un autre processus.

En tant que développeur, vous devez toujours supposer que l'utilisateur peut invoquer une application à tout moment et la fermer à tout moment. Indépendamment du fait qu'une Activity est au premier plan ou non, les données de l'application doivent être correctement mises à jour et maintenues.

Les propres applications de Google utilisent un ContentProvider personnalisé s. Le Gmail app en particulier utilise son ContentProvider pour recevoir de nouveaux e-mails lorsque la connectivité réseau est disponible et afficher les e-mails hors ligne. Le Facebook , WhatsApp &Twitter Les applications Android utilisent également ContentProvider s.