停止正在等待同步方法的AsyncTask

时间:2012-10-19 07:40:52

标签: java android multithreading android-asynctask

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

1 个答案:

答案 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();