Удаление намерений во время обработки IntentService - PullRequest
2 голосов
/ 22 мая 2011

Если я правильно понимаю документы API на IntentService, намерения отправляются в очередь IntentService, если она обрабатывается и обрабатывается последовательно.

Есть ли простой способ сообщить IntentService, что он должен просто отбросить любые намерения, отправленные ему во время обработки?

Ура, Торстен

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Есть ли простой способ ...?

Нет, не простой способ, о котором я знаю, но, возможно, не слишком сложный.

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

'Очередь' Интентов управляется вложенным классом ServiceHandler, который расширяет Handler. Если вы определяете свой собственный «IntentService» из источника, вы можете добавить методы для очистки очереди сообщений и даже завершить обработчик, если он находится в середине обработки Intent (если это то, что вам нужно).

0 голосов
/ 30 ноября 2012

лучше поздно, чем никогда.да, есть простой способпереопределить onStart() и вернуть, если вы не хотите обрабатывать намерение, или вызвать super.onStart() в противном случае.

public void onStart(Intent intent, int startId) {
  if (processing()) {
    return;
  }
  super.onStart(intent, startId);
} 

заметьте, однако, что в javadocs для IntentService специально сказано, что onStart () долженне переопределять.

...