2

たとえば、2 つのメソッド method1() と method2() があり、それぞれが新しい AsyncTask を作成し、内部で http-query の実行を開始します。各タスクはオブジェクトのリスト (list1 と list2) を返します。それらすべてを待機し、これらのリストを 1 つにまとめて返す必要があります。それを行う最善の方法は何ですか?

そして、私は実際に順序を守る必要はありません.list2の後にlist1になる可能性があります. すべての結果を待つ最善の方法と、それらをどこに蓄積する必要がありますか? 秩序を保ちたい場合はどうすればよいですか?

4

3 に答える 3

0

AsyncTaskの説明によると、2 つの興味深い方法があります。

  • doInBackground
  • onPostExecute

1 つ目はバックグラウンド スレッドで作業を行うために使用され、結果を返します。2 つ目は、結果を引数としてUI スレッドで呼び出されます。doInBackgroundダウンロード/計算されたデータを各 AsyncTaskのリストに追加できます。これは機能するはずです。

両方の AsyncTasks が完了したかどうかを知りたい場合は、UI スレッドで設定およびチェック済みの 2 つのフラグが必要です: set in onPreExecute、checked inonPostExecute

于 2013-01-10T20:55:40.947 に答える
0

AsyncTask の代わりに「スレッド」を使用することをお勧めします。例えば:

new Thread(new Runnable(){

   list1 = getList1();

   new Thread(new Runnable(){

      list2 = getList2();
      //you have now list1 and list2, call your method here to do your stuff
   }).start();
}).start();
于 2013-01-10T20:56:37.997 に答える
0

あなたがすでに行ったことを見ずに多くの助けを与えるのは難しい. しかし、メンバーArrayListorを作成し、最初のメソッドでLinkedHashMap最初のメンバーを呼び出し、それらの結果をリストに入れます。次に、最初のAsyncTaskメソッドから 2 番目のメソッドを呼び出し、それらの結果をリストに追加します。さらにヘルプが必要な場合は、開始したコードの一部を投稿してくださいonPostExecute()AynscTask

于 2013-01-10T20:40:53.467 に答える