2011-06-18 76 views
5

我有一些條件調用從我的代碼啓動相同的服務與不同的數據值通過捆綁傳遞到該服務。 當我檢查只有一個條件滿足,服務工作正常的所有條件。 但是當兩個或兩個以上的條件匹配時,這些調用這個相同的服務,但捆綁中的數據值不同。 問題是在滿足這種情況時,第一次調用發送的值不會被替換爲第二個條件以啓動相同的服務。 所以服務是錯誤地迴應。Android服務 - startService被多次調用,並導致值混合...

正是這樣

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

在兩個條件都滿足,那麼調用startService兩次。 但我在第二個條件startService調用中從第一個條件獲取值。

幫我解決這個問題...

+1

你可以發佈你的代碼,以瞭解問題是什麼? –

+0

你可以使用if-else-if語句嗎?或者用一個IntentService替換你的服務,這個IntentService會將要執行的請求排隊在一個工作線程中? –

回答

3

你在onStartCommand中的返回類型是什麼?

您應該瞭解該服務的生命週期。 https://developer.android.com/reference/android/app/Service.html#ServiceLifecycle

我會建議使用IntentService,因爲它是專爲處理異步任務而設計的,它也可以在工作線程中啓動。 http://developer.android.com/reference/android/app/IntentService.html

要真正幫助你,你的服務的代碼是非常重要的:)

+0

這幫了很大忙。沒有想到看我的返回類型。謝謝。 –

+1

我認爲你的第一個鏈接應該是https://developer.android.com/reference/android/app/Service.html#ServiceLifecycle ServiceLifecycle vs ProcessLifecycle – Alon

+0

嗨@Alon謝謝,我更新,因爲你是非常正確的! – Tosa

相關問題