我希望我的應用程序的Web服務調用同步,因此在任何給定時刻只有1個正在執行。跨進程同步Web服務調用
我創建了一個名爲WebService的對象,它需要發送數據(請求),將數據發送到Web服務,獲取響應並將其踢回到調用WebService對象的任何代碼。
我已經爲WebService對象添加了一個計數爲1(即:mutex)成員變量的信號量。這個成員變量是一個靜態的。它在發送之前被鎖定,在發送之後被解鎖。
不幸的是,它的運行不正常。我的大部分代碼都會啓動一個IntentService並進行Web服務調用。其他一些Web服務發生在應用程序進程中的AsyncTasks中。我認爲,因爲這是兩個獨立的進程(?),所以靜態互斥不會跨越兩個(?)。
有人對我如何在應用程序的進程中發生某些事件並同時發生某些服務時同步我的Web服務調用有任何建議嗎?
感謝您的回覆。我的大部分Web服務調用確實發生在IntentService中,但少數情況發生在AsyncTasks中。這些通常用於獲取某些數據以在可丟棄的特定屏幕上顯示。此外,這些AsyncTasks由不讀取/寫入數據庫的屏幕啓動。數據傳入並在Activity開始時使用。我不太清楚如何在不使用BroadcastReceiver的情況下將數據從IntentService傳遞到Activity,如果在Web服務完成之前啓動新的Activity並取消註冊BroadcastReceiver,這將不起作用。 – Andrew 2011-02-14 17:47:30