1

私の Android アプリでは、3 つの異なる非同期タスクを使用しています。2 つのタスクがアクティビティ A で実行され、3 つ目のタスクがアクティビティ B で実行されています。OS バージョン 2.3 のエミュレータでアプリを実行している間、アプリケーションは正常に動作しています。しかし、私は Android 4.0 以降のバージョンで試していますが、最初の Asynctask だけが実行されています。

4.0 以降のバージョンで 3 つの非同期タスクをすべて実行する方法はありますか?

4

4 に答える 4

5

次のことができます。

YourAsyncTaskClassObjectName.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

通常の実行の代わりに:

YourAsyncTaskClassObjectName.execute()

これは、私の単純な非ビジネスアプリで実際に機能しました。これで、2 つの asynctasks の doInBackground メソッドが永久に実行されました (それぞれの内部に while(true) があります)。

警告: これが最良の設計であると言っているわけではありませんが、これは実際に機能しました。

于 2013-04-04T03:10:58.810 に答える
4

Android 4.0では、AsyncTaskは実行のバックグラウンドスレッドを1つだけ許可します。つまり、一度に1つだけ実行します。これはフローズンヨーグルトでも同じ動作でしたが、ジンジャーブレッドで解除されました。したがって、複数のAsyncTasksを実行できます。したがって、続行するための最良の方法は、AsyncTasksをシリアル化することです。並列化すると、予測できない結果になります。

于 2012-12-06T11:32:36.453 に答える
1

こんにちは、あなたはあなた自身のエグゼキュータを書かなければなりません。投稿に従ってください

android4.0で非同期タスクをシリアル順に実行する

于 2012-12-06T11:10:14.313 に答える
0

それは正しい振る舞いです。Android 4.0 以降の AsyncTask は、一貫して実行されます。

于 2012-12-06T11:16:50.750 に答える