Служба Android - startService вызывается несколько раз и вызывает смешение значений

У меня есть несколько условных вызовов из моего кода, который запускает одну и ту же службу с разными значениями данных, переданными через пакет в эту службу. Когда я проверил выполнение только одного условия, сервис работает нормально для всех условий. Но когда совпадают 2 или более условий, они вызывают одну и ту же службу, но с разными значениями данных в пакете. Проблема в том, что при выполнении этого сценария значения, отправленные первым вызовом, не заменяются для второго условия для запуска той же службы. Значит, служба отвечает неправильно.

Это как это

if(some cond)
{
    some values in serivce intent bundle.startService(serviceintent1);
}
if(some cond)
{
    some data in intent bundle.startService(serviceintent1);
}

При выполнении обоих условий вызов startService повторяется дважды. но я получаю значения из первого условия во втором вызове startService.

Помогите мне в этом вопросе ...


person om252345    schedule 18.06.2011    source источник
comment
Можете ли вы опубликовать свой код, чтобы понять, в чем проблема?   -  person citizen conn    schedule 19.06.2011
comment
Можете ли вы использовать оператор if-else-if? Или замените свой сервис на IntentService, который будет ставить в очередь запросы на выполнение в рабочем потоке?   -  person Glendon Trullinger    schedule 19.06.2011


Ответы (2)


Какой у вас тип возвращаемого значения в onStartCommand?

Вы должны прочитать о жизненном цикле сервиса. https://developer.android.com/reference/android/app/Service.html#ServiceLifecycle

Я бы предложил использовать IntentService, поскольку он предназначен для обработки задач asyncron, он также запускается в рабочем потоке. http://developer.android.com/reference/android/app/IntentService.html

Чтобы вам действительно помочь, очень важен код вашего сервиса :)

person Tosa    schedule 18.06.2011
comment
Это очень помогло; не думал смотреть на мой возвращаемый тип. Спасибо. - person midiwriter; 27.05.2013
comment
Я думаю, ваша первая ссылка должна быть developer.android.com/reference/android / app / ServiceLifecycle против ProcessLifecycle - person Alon; 15.02.2018

Взгляните на Привязать службу к активности в Android вопрос .. где обсуждается разница между startservice и bindservice .. Я думаю, это может решить вашу проблему.

person success_anil    schedule 19.06.2011