Cela dépend fortement du type de synchronisation dont vous avez besoin.
Périodique
Si votre application est une application d'actualités qui publie des articles à une certaine heure chaque jour (disons à 7 h 45 tous les jours), vous exécutez une tâche périodique dans un service d'arrière-plan, disons à 8 heures.
par exemple : Drippler. Ils me préviennent une fois par jour (vers 18h30). Je crois qu'ils utilisent une tâche périodique.
Événement déclenché
Si votre transfert de données est déclenché par l'action de l'utilisateur, utilisez un service d'arrière-plan ou une tâche AsyncTask pour le transfert de données.
par exemple : DropBox / Evernote. Ils se synchronisent lorsque j'interagis avec l'application.
Instantané
Si votre application exécute la messagerie instantanée / e-mails / mises à jour importantes non périodiques , vous avez besoin de notifications push, car vous souhaitez alerter immédiatement l'utilisateur. Utilisez GCM ou Parse pour ce cas. par exemple: WhatsApp / chat Google. Puisque vous avez explicitement mentionné que vous ne souhaitez pas utiliser GCM, je vais vous expliquer pourquoi vous devriez utiliser un fournisseur de notification push standard au lieu d'écrire le vôtre:
Les notifications push fonctionnent instantanément - il y a très peu de retard (de l'ordre des secondes, rarement des minutes). Si vous deviez implémenter votre propre solution / bibliothèque pour ce faire - dans un modèle naïf, vous cingleriez le serveur toutes les secondes ou 5 secondes ou une minute pour vérifier l'état. Ceci est très inefficace car il consomme du CPU (et donc de la batterie), de la bande passante sur le mobile et se charge sur votre serveur. Cependant, dans GCM / Parse, ils gardent toujours un port ouvert avec le serveur (voir ici ). C'est le moyen standard et le plus efficace. De plus, si 10 applications utilisent GCM, vous n'avez pas besoin de 10 connexions ouvertes, vous n'en avez besoin que d'une par appareil. Et vous ne voulez vraiment pas développer votre propre solution à moins d'avoir une raison / des fonds / du temps valables pour le faire.
Remarque sur l'adaptateur de synchronisation : l' adaptateur de synchronisation fonctionne bien pour les trois cas ci-dessus. Cochez Exécuter un adaptateur de synchronisation et vous verrez que cela dépend soit de GCM ou de votre propre mécanisme (déclencheur d'événement ou solution personnalisée) ou de la disponibilité du réseau (déclencheur d'événement) ou d'un événement périodique. Dans l'ensemble, c'est une bonne classe pratique pour synchroniser les données sans avoir à faire une longue liste d'initialisations à chaque fois ou à implémenter tous les cas ci-dessus en un seul endroit.