2013-10-27 6 views
0

У меня есть приложение, которое содержит около 10 и более видов деятельности.Стратегия синхронизации при запуске приложения

Я пытаюсь выполнить синхронизацию с сервером задней части. (Я отправляю некоторые данные и возвращаю некоторые данные, которые храню в Базах данных и т. Д.)

Я хочу, чтобы синхронизация работала до тех пор, пока мое приложение видно. Моя проблема в том, что на Android нет реальной концепции «мое приложение теперь работает». Кроме того, у пользователя может быть так много точек выхода, что будет трудно узнать, в какой onPause/onStop я должен поместить свой код. (исправьте меня и объясните, пожалуйста, если я ошибаюсь здесь).

Обратите внимание: я не буду изменять связанные с GUI элементы из этого механизма синхронизации.

Мне предложили пару решений, которые можно опускать, как показано ниже.

  1. Сделайте сервис и привяжите его к каждому виду деятельности. Пока у службы есть владелец, она запускается, пока она этого не делает, она остановлена.
  2. Используйте контрольный счетчик для синхронизации. Получите одноэлементный класс, который запускает синхронизацию и каждый из них onStart и onStop, добавляет или вычитает мой счетчик и останавливает синхронизацию, когда счетчик равен 0.
  3. Подкласс контекста приложения (или создания статических переменных), чтобы увидеть состояние каждого активности и внутри каждого из них onResume и onPause делают проверку и запускают/приостанавливают/останавливают синхронизацию соответственно.

Какой подход рекомендуется, и если есть другие идеи, добро пожаловать.

ответ

0

Вы можете использовать SyncAdapter. Существует Google IO Session on how to sync your app with sync adapter from 2010. (ссылка содержит время, когда она начинает становиться интересной для вас, если это не работает, ее запуск начинается с минуты 44)

Если вы не хотите использовать SycAdapter, и ваша цель - синхронизировать ТОЛЬКО, если приложение видно, что вы могли бы сделать следующее:

Создать Service. Запустите/Перезапустите его каждые onResume() вашей активности (= приложение попадает в поле), останавливайте его на каждом onStop() или onPause() (= приложение получает в фоновом режиме). Если служба работает, она синхронизирует ваши данные. Когда активность не видна, синхронизация отсутствует. Вы можете использовать указанный счетчик ref, чтобы поддерживать работу в течение всей фазы переднего плана, это зависит от того, как выполняется ваша синхронизация (короткая или длительная синхронизация)

+0

10x много. Однако в моем случае было бы лучше искать механизм обслуживания/потока, а не реализовывать SyncAdapter. – tony9099

+0

См. Редактирование, это должно охватывать ваши требования – for3st

Смежные вопросы