Android: как отличить команды, используемые для StartSevice () - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть вопросы здесь.Я хотел общаться с моей службой с моего приемника вещания.Поэтому я использовал метод StartSevice (намерение).В сервисной части OnStartCommand () вызывается каждый раз, когда я вызываю StartService ().Мне просто нужно знать, как я могу распознать в onStartCommand () откуда он вызывается?

Надеюсь, я ясен в своем вопросе.Если нет, пожалуйста, дайте мне уточнить ...

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

В методе onStartCommand намерение, которое вы использовали для запуска службы, передается в качестве аргумента.

onStartCommand(Intent intent, int flags, int startId)

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

 intent.putExtra("From", "MainScreen");
0 голосов
/ 28 февраля 2012

Вы не можете на самом деле проверить, откуда вам звонили, но вы можете сделать что-то немного связанное. Вы можете указать определенные теги в Intent, которые вы передаете onStartCommand (). Обратите внимание, что onStartCommand () принимает намерение в качестве аргумента, это будет намерение, которое вы отправили. Всякий раз, когда вы отправляете намерение запустить службу от своего широковещательного приемника, вы можете указать в своем намерении определенные «дополнительные», а затем использовать их в своем сервисе.

http://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent, int, int)

Между прочим, приведенный вами вариант использования больше похож на IntentService, чем на обычный сервис. Это сервис, который делает то, что вы уже делаете: он сидит там и ждет, когда его намерены запустить, а затем реагирует соответственно:

http://developer.android.com/reference/android/app/IntentService.html

...