2012-02-09 53 views
5

我正在处理主要负责联系远程服务器并显示所提供数据的应用程序。Android中的同步服务调用

服务是基于肥皂的。为此,我使用kso​​ap库,但让我们切入案例。

我一直在使用异步任务“调用服务”。 一切似乎顺利,但...

服务是顺序的,并倾向于'失去'我的请求,所以我没有得到正确的结果。

所以我决定采取同步的方式来解决问题,但这样一来我必须提供额外的装载按钮/酒吧等

性能是这样可怕的。处理这种情况的最佳方法是什么? 我可以使用什么样的同步,以便请求之间不会有任何竞争?

如何使用Android服务? 那些更好?

非常感谢您提供答案。

+0

你为什么不按顺序执行AsyncTasks,只有当他们是成功的? – dmon 2012-02-09 20:32:37

+0

你是什么意思,通过连续调用它们? – Olek 2012-02-09 20:58:21

回答

15

实际上,你可以调用AsyncTask在同步方式:

class MyTask extends AsyncTask<Void,Void,String> 
{...} 

MyTask x = new MyTask(); 
String result = x.execute().get(); 

docs pageAsyncTask

+1

感谢您的快速回复。你自己试过了吗?所以告诉它get()我想它只是在它所执行的线程上调用join()。 get()不会暂停UI或其他任务吗?是否有内置的机制来控制任务队列? – Olek 2012-02-09 20:50:16

+0

我想我主要回答“同步”部分。我知道你想阻止用户界面,直到你有回应。至少在onPreExecute和onPostExecute中,您可以安全地启动进度条等等。 – 2012-02-09 20:55:56

+0

其实我不想冻结用户界面。我正在寻找一种方法来避免这种情况。我正在寻找大部分任务的同步方式。 – Olek 2012-02-09 21:10:30