2

私は非常に単純なタスクを実装しています-ユーザー認証。AsyncTaskを介して実装したすべてのネットワーク操作。そして、私は問題を抱えています。私は2つのAsyncTasksを持っています-1つはより低レベルを呼び出す承認であり、すべてのネットワークタスク操作(JSON解析、REST実現など)に共通であり、これもAsyncTaskを介して実装されます。そして、私には問題があります。これら2つの操作のonPostExecuteメソッドが間違った順序で呼び出されます。

質問-実行の順序を設定することはできますか、それともこれらすべてを正しい方法で処理する方法についてアドバイスをいただけますか?しかし、AsyncTaskを拒否して他のものを使用することを提案しないでください。AsyncTaskを使用した適切なソリューションが必要です。前もって感謝します。

4

2 に答える 2

1

AsyncTask高レベルのバックグラウンド操作用にシングルが必要なようです。低レベルのネットワークアクティビティは、高レベルで直接呼び出す必要がありますdoInBackground。2つAsyncTaskのを実行すると、個々の作業のタイミングを簡単に調整することができなくなります。

何らかの理由でAsyncTask(つまり、承認以外の目的で)低レベルの操作を独立して実行する必要がある場合は、AsyncTaskそれ自体から低レベルのネットワークアクティビティを直接呼び出す必要がありdoInBackgroundます。ただし、低レベルのアクティビティは、他のアクティビティとは別にする必要がありますAsyncTask

于 2012-12-24T18:40:51.410 に答える
0

2.asycTaskを1.fisrtasycTaskonPostExecuteメソッドで実行します。ちなみに、自分で順番を設定できます。

以下のように、

 private class task1 extends AsyncTask<URL, Integer, Long> {

     protected int doInBackground(URL... urls) {
         // do your stuf
         return 1;
     }


     protected void onPostExecute(int result) {
           // first task finished and second task starts
           new task2().execute();
     }
 }


private class task2 extends AsyncTask<URL, Integer, Long> {

     protected int doInBackground(URL... urls) {
     // do your stuf
         return 1;
     }


     protected void onPostExecute(int result) {
        // do your stuf
     }
 }
于 2012-12-24T18:35:44.483 に答える