我有一个应用程序欠发达,我需要按顺序执行3个HTTP POST。实现这个的最佳方法是什么?我应该
使每个HTTP Post都有自己的Async Class和菊花链Async类(即从第一个Async的onPostExecute调用第二个异步)
将所有HTTP POST放在单个Async的doInBcakGround中。
我知道如何进行HTTP POST请求,而我正在使用OKHTTP lib。我只是想知道它是按顺序进行多个POST的最佳实践。
干杯
答案 0 :(得分:2)
您的第一种方法会更好和非常模块化,因为您可以跟踪应用中的任何内容。在三种不同的AsyncTask
中,您可以拥有检查postExceute()
AsyncTask
已完成其工作(更轻松,更准确)和
>>>>>如果应用程序崩溃
然后httpPost
失败了。但是,第二个会使您的代码变得混乱,并且您将无法跟踪获取Exception
请求失败的httpPost
(尽管如此)。
因此,从第一个任务的onPostExecute启动第二个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.