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 個の asynctasks が完了したら停止する」必要はありません...

おそらく、ジョブの 21 の異なる部分を実行する、独自の asynctask が必要になるでしょう。各部分の間に、停止条件を挿入できます。

   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 に答える