【问题标题】:Synchronous service calls in AndroidAndroid 中的同步服务调用
【发布时间】:2012-02-09 20:21:50
【问题描述】:

我正在开发应用程序,其主要职责是联系远程服务器并显示提供的数据。

服务是基于肥皂的。为此,我使用 ksoap 库,但让我们切入正题。

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

服务是连续的,往往会“丢失”我的请求,所以我没有得到正确的结果。

所以我决定采用同步方法来解决问题,但这样我必须提供额外的加载按钮/栏等。

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

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

提前感谢您的回答。

【问题讨论】:

  • 为什么不按顺序执行 AsyncTasks,并且只有在它们成功的情况下?
  • 按顺序调用它们到底是什么意思?

标签: android web-services soap android-asynctask sequential


【解决方案1】:

您实际上可以以同步方式调用AsyncTask

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

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

查看docs pageAsyncTask

【讨论】:

  • 感谢您的快速回复。你自己试过吗?所以告诉它 get() 我猜它只是在它执行的线程上调用 join() 。 get() 不会暂停 UI 或其他任务吗?是否有任何内置机制来控制任务队列?
  • 我想我主要回复了“同步”部分。我了解到您想在收到回复之前阻止 UI。至少使用 onPreExecute 和 onPostExecute 你可以安全地启动进度条等等。
  • 其实我不想冻结 UI。我正在寻找一种方法来避免这种情况。我正在寻找一种同步大多数任务的方法。
  • 您可以在doInBackground 中按顺序运行个人,直到您对结果满意,然后返回。
  • 这似乎是合理的。谢谢你。明天我会尝试这种方法,看看效果如何。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
相关资源
最近更新 更多