Какие варианты у меня есть для проверки, если IntentService уже работает? - PullRequest
1 голос
/ 26 февраля 2011

У меня есть AlarmService, который активируется каждые 15 минут и запускает IntentService. Тем не менее, я хотел бы убедиться, что, если ранее запущенный IS уже запущен, что AlarmService не пытается запустить другой (IS имеет дело с файлами, и было бы странное состояние гонки, если вторая версия пыталась действовать на одни и те же файлы).

Как лучше всего опросить систему, чтобы узнать, запущен ли экземпляр моего IS, и просто пропустить текущую итерацию cron AlarmService?

1 Ответ

8 голосов
/ 26 февраля 2011

, что AlarmService не пытается запустить другую (IS работает с файлами, и возникнет странное состояние гонки, если вторая версия попытается воздействовать на те же файлы).

Не будет условий гонки. Во-первых, будет только один экземпляр IntentService. Во-вторых, IntentService будет обрабатывать только один Intent за один раз в onHandleIntent().

Как лучше всего опросить систему, чтобы увидеть, запущен ли экземпляр моего IS, и просто пропустить текущую итерацию cron AlarmService?

Не делай так. В вашем IntentService отслеживайте, когда вы в последний раз работали с элементом данных. Если в onHandleIntent() это значение равно null, это ваш первый проход через какое-то время, и поэтому вы, вероятно, хотите продолжить работу. Если значение не null, сравните его с текущим временем, а если оно слишком рано, просто вернитесь с onHandleIntent().

...