如何让一系列任务一个接一个地运行(Serrally)。我没有使用AsyncTasks
,而是loopj AsyncHttpClient
,但这个问题也适用于其他任务。
它的结构方式是:Application有执行多个异步调用的main方法。这些调用是相互串行的,必须一个接一个地运行。
Main()
调用FuncA()
会触发异步请求。控件返回Main()
OnFuncAComplete()
继续:Main()
调用Main()
会触发异步请求。控件返回FuncB()
Main()
继续:如何编写main以锁定步骤执行所有这些功能,如何暂停OnFuncBComplete()
并在Main()
“触发”主要恢复操作?我的第一个想法是ReentrantLock,但我似乎无法让它发挥作用。
编辑:我知道我可以从Main()
拨打OnFuncXComplete
,但后来我陷入了回调地狱,我想尽可能避免。
答案 0 :(得分:0)
看起来可能有多个解决方案。一种可能性是使用SynchronousQueue在Main和处理器之间传输任务。可能不需要AsyncTask,而是你的任务可以扩展runnables而不需要回调来“解锁”Main()
答案 1 :(得分:0)
看看IntentService
。它是一个Worker服务,只有一个bg线程,请求以FCFS方式排队和处理。服务到您的主页的回复可以通过您的主管事先应该注册的BroadcastReceiver
来传递。