按顺序进行多个HTTP POST

时间:2014-09-25 05:37:13

标签: android asynchronous http-post

我有一个应用程序欠发达,我需要按顺序执行3个HTTP POST。实现这个的最佳方法是什么?我应该

  1. 使每个HTTP Post都有自己的Async Class和菊花链Async类(即从第一个Async的onPostExecute调用第二个异步)

  2. 将所有HTTP POST放在单个Async的doInBcakGround中。

  3. 我知道如何进行HTTP POST请求,而我正在使用OKHTTP lib。我只是想知道它是按顺序进行多个POST的最佳实践。

    干杯

3 个答案:

答案 0 :(得分:2)

您的第一种方法会更好非常模块化,因为您可以跟踪应用中的任何内容。在三种不同的AsyncTask中,您可以拥有检查postExceute() AsyncTask已完成其工作(更轻松,更准确)和

  

>>>>>如果应用程序崩溃

然后httpPost失败了。但是,第二个会使您的代码变得混乱,并且您将无法跟踪获取Exception请求失败的httpPost(尽管如此)。


因此,从第一个任务的onPostExecute启动第二个AsyncTask将是更好的方法。

另见:Calling an AsyncTask from another AsyncTask

答案 1 :(得分:0)

1和2方法都使app ANR ,因此对其他方法更好。

您可以使用 ExecutorService 执行每个提交的任务,使用可能的几个池化线程,通常使用Executors工厂方法配置。

线程池解决了两个不同的问题:由于减少了每个任务的调用开销,它们通常在执行大量异步任务时提供更高的性能,并且它们提供了一种绑定和管理资源(包括执行时消耗的线程)的方法一系列任务。每个ThreadPoolExecutor还维护一些基本统计信息,例如已完成任务的数量。

这里有更多的deatias http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html

答案 2 :(得分:0)

  

将所有HTTP POST放在单个异步的doInBcakGround中。

因为您的所有帖子都在一个模块中处理。

没有创建asyntask的开销,GC可能不会像第一次那样调用。

你不需要检查互联网连接3次,你必须检查一次

所有异常处理一次,但在方法1中,您必须复制并粘贴可能发生的所有异常处理程序。并始终建议不要重复自己。如果你可以做些什么来不复制和粘贴代码,那就去做吧。

最后我更喜欢方法2.