如何几个异步任务已经完成
后开始一个新的活动我有一个大问题:如何几个异步任务已经完成
我想几个异步任务已经完成后开始新的活动。 我的问题是异步任务是动态启动的。有时候我只有一个异步任务,有时候我有五个异步任务。 更大的问题是,所有的Async-Tasks都是相同的,只有另一个URL。因为它们是下载任务。
任何人都可以帮忙吗?
解决方案:
我创建的每一个可用的更新计数1更高的计数器。因此,如果有五个更新可用,计数器将被设置为5.每完成更新和解压缩,计数器将被设置为1。如果counter == 0
它会打开新的活动。
感谢您的所有答案。
回答:
使用带有AsynTasks的数量分配一个全局变量计数器,
在每个onPostExecute递减计数器
。如果(反== 0)开始新的活动
class A{ int counter =0;
public doJob(int jobCOunt){
this.counter = jobCount
new Job().execute();
}
class Job extends AsyncTask{
...
protected void onPostExecute(Boolean success) {
counter--;
if(counter == 0){
startActivity
}
}
}
}
回答:
只是好奇,想知道我们不能移动doInBackground()中的不同URL的循环来获取结果吗?我认为这可以解决您的大问题,并且还将轻松管理单个AsyncTask。
回答:
我想运行每个AsyncTask
在Executor
然后等待结果应满足您的需求。熟悉执行者this topic可能会有所帮助。顺便说一句,如果正确实施,您已经应该在其上运行该任务以避免耗时的任务池。异步任务可以通过AsyncTask.executeOnExecutor(Executor exec, Params... params)
方法在执行程序上执行。
之后,创建管理线程(我强烈建议使用IntentService
这样做,并移动所有任务 - 那里的管理逻辑),这将等待任务完成并发送事件以启动活动。如何等待执行器中的所有任务都已完成?那么,read this question。这里提供了比我能提供的更详细的答案。
我很确定我已经描述过你最好的方法。
以上是 如何几个异步任务已经完成 的全部内容, 来源链接: utcz.com/qa/258280.html