我想停止/取消等待同步方法的Pendning AsyncTasks。
下面是我的代码:(它启动所有21个AsyncTasks。我想在中间停止,例如在10个asynctasks完成之后。任何人都可以建议一个方法吗?
for(int i=0;i<21;i++){
SafeAsyncTask<String, Void, LinkInfo[]> mGetLinkInfo = new SafeAsyncTask<String,Void,LinkInfo []>() {
protected LinkInfo[] doInBackground(String... v) {
return downloadLinks(v[0]);
}
protected void onPostExecute(LinkInfo[] links) {
}
};
mGetLinkInfo.safeExecute(i);
}
synchronized void downloadLinks(){
//Lengthy process
}
答案 0 :(得分:0)
好吧,使用你的代码,你将得到21个不同的AsyncTask,它们同时并行播放。所以你需要“在10次asynctasks完成后停止”没有意义......
也许你会想要一个独特的asynctask,做21个不同的工作部分。在每个部分之间,您可以插入停止条件:
SafeAsyncTask<Void, Void, LinkInfo[]> mGetLinkInfo = new SafeAsyncTask<Void,Void,LinkInfo []>() {
protected LinkInfo[] doInBackground() {
LinkInfo[] infos = new LinkInfo[21]; // Is this what you want ?
for(int i=0;i<21;i++) {
// Do part i/21 of the job
infos[i] = downloadLinks(i);
if (getStopCondition()) break;
}
return infos;
}
};
mGetLinkInfo.safeExecute();