0

ネストされた AsyncTask があります。この簡単な例は、それらが機能することを証明しています: http://pastebin.com/0R9Cfxx1

ただし、本番環境のコードでは、ネストされた AsyncTask は getStatus == AsyncTask.RUNNING を返しますが、doInBackground() は実行されません。

どうすればいいの?

4

1 に答える 1

1

私が AsyncTask を理解している方法では、「doInBackground()」が実行される別のスレッドを作成するメイン アプリケーション スレッドから実行することになっています。ここで、ネストされた AsyncTask を別の AsyncTask 内で実行すると、メイン アプリ スレッド、最初の AsyncTask スレッド、および 2 番目の AsyncTask スレッドの合計 3 つのスレッドが最小になります。それらはすべて並行して実行されるため、「入れ子」の概念が崩れます。AsyncTask を 1 つだけ使用するようにコードをリファクタリングするのが最善の方法だと思います。

于 2012-09-07T16:24:39.390 に答える