Це сильно залежить від того, який тип синхронізації вам потрібен.
Періодична
Якщо ваш додаток - це новинний додаток, який публікує публікації щодня в певний час (скажімо о 7.45 ранку щодня), тоді ви виконуєте періодичне завдання у фоновій службі, скажімо, о 8 ранку.
наприклад : Крапельниця. Вони повідомляють мене один раз щодня (близько 18:30). Я вважаю, що вони використовують періодичні завдання.
Подія запущена
Якщо ваша передача даних викликана діями користувача, то використовуйте фонову службу або AsyncTask для передачі даних.
наприклад : DropBox / Evernote. Вони синхронізуються під час взаємодії з додатком.
Миттєве
Якщо у вашій програмі запущено обмін миттєвими повідомленнями / поштою / неперіодичними важливими оновленнями, вам потрібні натискання сповіщень, оскільки ви хочете негайно попередити користувача. Використовуйте або GCM або Parse для цього випадку. наприклад: Чат WhatsApp / Google. Оскільки ви прямо вказали, що не хочете використовувати GCM, я розкажу, чому вам слід використовувати стандартного постачальника push-повідомлень, а не писати власного:
Push-сповіщення працює миттєво - затримка дуже невелика (порядку секунд, рідко хвилин). Якби ви реалізували своє власне рішення / бібліотеку для цього - у наївній моделі, ви будете пінг-сервер щосекунди чи 5 секунд чи хвилину, щоб перевірити стан. Це дуже неефективно, оскільки він споживає процесор (а отже, і акумулятор), пропускну здатність мобільного телефону та завантаження вашого сервера. Однак у GCM / Parse вони завжди зберігають порт відкритим разом із сервером (див. Тут ). Це стандартний та найефективніший спосіб. Крім того, якщо 10 додатків використовують GCM, вам не потрібно 10 відкритих підключень, вам потрібно лише одне на кожен пристрій. І ви дійсно не хочете розробляти своє власне рішення, якщо у вас немає поважних причин / коштів / часу для цього.
Примітка про адаптер синхронізації : адаптер синхронізації працює добре для всіх вищезгаданих трьох випадків. Поставте прапорець Запуск адаптера синхронізації, і ви побачите, що це або залежить від GCM або вашого власного механізму (тригер події або користувацьке рішення) або доступності мережі (тригер події) або періодична подія. Загалом, це хороший зручний клас для синхронізації даних без необхідності робити довгий список ініціалізацій кожного разу або реалізовувати всі вищезазначені випадки в одному місці.