0

定期的にリクエストを行うアクティビティがあります(jsonデータフィードを取得するために15秒ごとに1回)。私がAsyncTaskに渡すリクエストは、メインUIスレッドにはありません。ここまでは順調ですね。しかし、フィードをリクエストし、応答するのに20秒かかるとしましょう。30秒が経過するまで、別のスレッドを開始したくありません。それで ....

最初のタスクがまだ終了していない場合にAsyncTaskが実行されないようにする方法はありますか?

また、AsyncTaskを30秒以内にタイムボックス化する方法はありますか?Httpタイムアウトの無防備?

ありがとう、スティーブ

4

1 に答える 1

0

これを強制するためにミューテックス変数を使用できます。たとえば、変数を と呼びますupdate。これは、初期値を持つブール変数になりますtrue

非同期タスクを実行する前に、 の値を確認してください。非同期タスクを実行し、 に設定されているupdate場合。trueupdatefalse

非同期タスクの終了後、onPostExecute()メソッドで、再度 に設定updatetrueます。

そのため、1 つの非同期タスクが完了していない間は別の非同期タスクが起動されないため、排他性が保証されます。

于 2012-11-22T08:32:08.567 に答える