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, тъй като е предназначен за обработка на асинхронни задачи, също така стартира в работна нишка. 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