跨进程同步Web服务调用

时间:2011-02-14 16:57:49

标签: android service semaphore

我希望我的应用程序的Web服务调用同步,因此在任何给定时刻只执行1个。

我创建了一个名为WebService的对象,它接收需要发送的数据(请求),将其发送到Web服务,获取响应并将其踢回到调用WebService对象的任何代码中。

我在WebService对象中添加了一个计数为1(即:mutex)成员变量的信号量。该成员变量是静态的。它在发送之前被锁定,在发送之后被解锁。

不幸的是,它运作不正常。我的大多数代码都会启动一个IntentService并进行Web服务调用。其他一些Web服务发生在应用程序进程的AsyncTasks中。我认为,因为这是两个独立的进程(?),静态互斥体不会扩展到两个(?)。

当应用程序进程中发生某些情况并且某些服务发生在服务中时,是否有人建议我如何同步我的Web服务调用?

1 个答案:

答案 0 :(得分:0)

  

其他一些Web服务发生在应用程序进程的AsyncTasks中。我认为,因为这是两个独立的进程(?),静态互斥体不会扩展到两个(?)。“

除非你强迫他们处于不同的进程(糟糕),否则他们将处于相同的过程中。

  

当应用程序进程中发生某些情况并且某些服务发生在服务中时,是否有人建议我如何同步我的Web服务调用?

简单:让它们全部由服务处理。不要使用AsyncTask,而是让活动在startActivity()上调用IntentService,并附加额外内容以传递任何必要的数据。由于IntentService使用单个线程来处理传入的Intents,因此您甚至不需要Semaphore