我希望我的应用程序的Web服务调用同步,因此在任何给定时刻只执行1个。
我创建了一个名为WebService的对象,它接收需要发送的数据(请求),将其发送到Web服务,获取响应并将其踢回到调用WebService对象的任何代码中。
我在WebService对象中添加了一个计数为1(即:mutex)成员变量的信号量。该成员变量是静态的。它在发送之前被锁定,在发送之后被解锁。
不幸的是,它运作不正常。我的大多数代码都会启动一个IntentService并进行Web服务调用。其他一些Web服务发生在应用程序进程的AsyncTasks中。我认为,因为这是两个独立的进程(?),静态互斥体不会扩展到两个(?)。
当应用程序进程中发生某些情况并且某些服务发生在服务中时,是否有人建议我如何同步我的Web服务调用?
答案 0 :(得分:0)
其他一些Web服务发生在应用程序进程的AsyncTasks中。我认为,因为这是两个独立的进程(?),静态互斥体不会扩展到两个(?)。“
除非你强迫他们处于不同的进程(糟糕),否则他们将处于相同的过程中。
当应用程序进程中发生某些情况并且某些服务发生在服务中时,是否有人建议我如何同步我的Web服务调用?
简单:让它们全部由服务处理。不要使用AsyncTask
,而是让活动在startActivity()
上调用IntentService
,并附加额外内容以传递任何必要的数据。由于IntentService
使用单个线程来处理传入的Intents
,因此您甚至不需要Semaphore
。