Фоновый сервис Android и AlarmManager - PullRequest
2 голосов
/ 24 апреля 2011

Я кодирую приложение для Android, которое каждые 5 минут получает положение пользователя, сохраняет его в базе данных и отправляет на сервер.

Я прочитал много способов сделать это, я собирался сделать следующее:

  1. Пользователь запускает приложение
  2. Основной пользовательский интерфейс запускает службу.
  3. Служба работает в фоновом режиме и продолжает включать и выключать GPS, а также создавать новые потоки, которые будут сохранять в базе данных и отправлять данные на сервер.

Но я видел, что это можно сделать с помощью «Удаленной службы» (http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html) или с AlarmManager, который планирует запуск этой службы каждые 5 минут.

Служба должна работать всегда: важно, чтобы после каждого интервала (5 минут) она выполнялась.

Думаю, здесь нужна некоторая ясность.

Спасибо за помощь,

1 Ответ

5 голосов
/ 24 апреля 2011

Я кодирую приложение для Android, которое каждые 5 минут получает положение пользователя, сохраняет его в базе данных и отправляет на сервер.

Пожалуйста, позвольте пользователю выбирать местоположениепоставщик.Не у всех есть GPS на своем устройстве.Не у всех включен GPS.И не всем захочется, чтобы каждые пять минут включалось включение питания GPS.

Пожалуйста, позвольте пользователю выбирать период опроса, в том числе «никогда не опрашивать - я обновлю информацию вручную из действия».Также, пожалуйста, соблюдайте настройку фоновых данных (устарело с ICS).

Я думаю, что здесь нужна некоторая ясность.

Если опросдолжен продолжаться, даже если действие не на переднем плане, используйте AlarmManager.Тем не менее, большинство рецептов для использования AlarmManager будут иметь реальную работу (в вашем случае исправление GPS и сетевой ввод / вывод), обработанные IntentService.Это не будет работать в вашем случае, потому что GPS асинхронный - вы не можете просто получить починку, когда захотите.Исправление займет много времени, возможно, навсегда, поэтому вам придется иметь дело с задержкой и, в конечном итоге, сроками выполнения операции.Запись Service для этого возможно , но сложно, особенно если вы собираетесь собирать эту информацию, даже если устройство засыпает.

Если, однако, опрос толькодолжен продолжаться, пока активность находится на переднем плане, а устройство включено, я бы не стал беспокоиться о Service.Просто задайте для действия postDelayed() настройку запускаемого по расписанию бита кода каждые пять минут, а затем сделайте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...