0

我想停止/取消正在等待同步方法的挂起 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
     }
4

1 回答 1

0

好吧,使用您的代码,您将获得 21 个不同的 AsyncTask,它们同时并行运行。所以你需要“在 10 个异步任务完成后停止”是没有意义的......

也许你会想要一个独特的异步任务,完成工作的 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();
于 2012-10-19T07:51:14.953 回答