0

私のアプリケーションでは、2 つの異なる URL からいくつかのデータをダウンロードし、リストに入力する必要があります。そのために、2 つの AsyncTask クラスを 1 つ作成します。最初のクラスは、対応する URL からデータをダウンロードする役割を果たします。もう 1 つは、前述の asyncTasks を実行し、その後 UI スレッドにリストを設定する役割を果たします。データをダウンロードするタスクを並行して実行する必要があるため、executor で実行します。私の問題は、リストの作成を担当するタスクが、他の 2 つのタスクがデータをダウンロードする前に終了することです。そのスレッドを他の 2 つが戻るまで待機させるにはどうすればよいですか。並行して実行する必要があるため、他のものでは .get を使用する必要があります。明確にするために、いくつかのコードも投稿しています。

    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

                          readJsonTask task = new readJsonTask(this);


          task.execute();
    }

      private class readJsonTask extends AsyncTask<String, Void, String> {

            @Override
            protected String doInBackground(String... args) {

              downloadUrl task = new downloadUrl(url1,"jsonData1","/sdcard/appData/LocalJson/jsonData1");
              task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

              downloadUrl task1 = new downloadUrl(url2,"jsonData2","/sdcard/appData/LocalJson/jsonData2");
              task1.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

             return "done"; 

      }


        @Override
        protected void onPostExecute(String result) {

            //update UI

        }
    }


      private class downloadUrl extends AsyncTask<String, Void, String> {

        private String url;
        private String targetFolder;
        private String pathForLoad;



            @Override
        protected String doInBackground(String... args) {               


            //download Data


            return "done"; 
        }

        @Override
        protected void onPostExecute(String result) {               



        }
  }
4

2 に答える 2