2017-07-08 12 views
0

ABという2つのクラスがあります。 クラスには、という静的関数が含まれています。は、非同期ネットワークコールを実行し、そのデータをローカルに格納します。静的関数を呼び出すと上書きされます

次のコードがcalculate関数内の非同期タスクを終了させるかどうかを知りたかったのです。

Class A 
{ 
B.calculate(); // performs long running async task 
B.calculate(); // the above call to calculate has not finished but this was called 
} 

実行を継続計算する最初の呼び出しから始めたり、それが破壊され、新しいタスクが を作成します非同期タスクは、ウィル?

答えて

0

いいえ、AsyncTaskをもう一度実行しても、元のものは強制終了されません。その代わりに、非同期タスクキューに新しいタスクが追加されます(デフォルトでは非同期タスクは一度に1つしか実行されないため)、最終的に2番目のネットワーク要求が発生して実行されます。

(注:上記のあなたはAsycTaskサブクラスの新しいインスタンスを作成すると仮定しますが、もう一度同じインスタンスを実行しようとする場合は、例外が発生します。)私は改造とrxjavaを使用してへの切り替えに計画していた

+0

その場合も同じことが起こりますか?私が必要とする機能は、計算が何回呼び出されても、それぞれのデータでネットワークコールが行われることです。 –

+0

手がかりがなく、実装方法によって異なります。あるいは、少し努力したい場合は、AsyncTaskを使って動作させることもできます。実行中のタスクがある場合は追跡し、そうであれば2番目のタスクを起動しないでください。 –

関連する問題