2011-06-18 9 views
5

Mam pewne wywołania warunkowe z mojego kodu, który uruchamia tę samą usługę z różnymi wartościami danych przekazanymi przez pakiet do tej usługi. Po sprawdzeniu tylko jednego warunku usługa działa poprawnie dla wszystkich warunków. Jeśli jednak dwa lub więcej warunków jest takich samych, wywołują tę samą usługę, ale mają różne wartości danych w pakiecie. Problem występuje, gdy ten scenariusz jest spełniony, wartości wysłane pierwszym wywołaniem nie są zastępowane drugim warunkiem rozpoczęcia tej samej usługi. Usługa reaguje niesłusznie.Usługa Android - funkcja startService jest wywoływana wiele razy i powoduje zmianę wartości ...

To jak to

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

Gdy oba warunki są spełnione wtedy zadzwonić do StartService jest dwukrotnie. ale otrzymuję wartości z pierwszego warunku w drugim warunku wywołanie startService.

mi pomóc w tej kwestii ...

+1

Czy możesz opublikować swój kod, aby zrozumieć, na czym polega problem? –

+0

Czy możesz użyć instrukcji if-else-if? Lub zamień swoją usługę na IntentService, która będzie kolejkować żądania do wykonania w wątku roboczym? –

Odpowiedz

3

Jaki jest Twój typ zwracany w onStartCommand?

Powinieneś przeczytać o cyklu życia usługi. https://developer.android.com/reference/android/app/Service.html#ServiceLifecycle

Proponuję użyć IntentService, ponieważ jest ona przeznaczona do obsługi zadań asynchronicznych, rozpoczyna się również w wątku roboczym. http://developer.android.com/reference/android/app/IntentService.html

Aby naprawdę pomóc, kod usługi jest bardzo ważne :)

+0

To bardzo pomogło; nie myślałem, aby spojrzeć na mój typ zwrotu. Dzięki. –

+1

Myślę, że twój pierwszy link powinien być https://developer.android.com/reference/android/app/Service.html#ServiceLifecycle ServiceLifecycle vs ProcessLifecycle – Alon

+0

Hej @Alon dzięki, zaktualizowałem, jak masz rację! – Tosa

Powiązane problemy