如何几个异步任务已经完成

后开始一个新的活动我有一个大问题:如何几个异步任务已经完成

我想几个异步任务已经完成后开始新的活动。 我的问题是异步任务是动态启动的。有时候我只有一个异步任务,有时候我有五个异步任务。 更大的问题是,所有的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。

回答:

我想运行每个AsyncTaskExecutor然后等待结果应满足您的需求。熟悉执行者this topic可能会有所帮助。顺便说一句,如果正确实施,您已经应该在其上运行该任务以避免耗时的任务池。异步任务可以通过AsyncTask.executeOnExecutor(Executor exec, Params... params)方法在执行程序上执行。
之后,创建管理线程(我强烈建议使用IntentService这样做,并移动所有任务 - 那里的管理逻辑),这将等待任务完成并发送事件以启动活动。如何等待执行器中的所有任务都已完成?那么,read this question。这里提供了比我能提供的更详细的答案。
我很确定我已经描述过你最好的方法。

以上是 如何几个异步任务已经完成 的全部内容, 来源链接: utcz.com/qa/258280.html

回到顶部